UITextView の context menu
UITextView の context menu で、いろいろ出てくるわけですが、Copy, Select All, Share ぐらいに絞って表示したいなぁと。簡単だと思ったら、結構ハマった。
まず、UITextView の sub class を新設。
contex menu は次の method で検知できる。
-(BOOL) canPerformAction:(SEL)action withSender:(id)sender
action のところの method を検知したら YES を返してやると menu が表示される。NO ならその item は表示されない。コピーを表示したいなら、こんな感じだ。
if ( action == @selector( copy:) )
return YES;
select All なら、
action == @selector( selectAll: )
となる。で、Share はどうなんだと、action == @selector( share: ) と書いてもダメだ。
いろいろ調べたら、action == NSSelectorFromString( @"share:" ) だってよ・・・
share だけ違うとは思わなかった。
さらに、context menu は出したいけど、keyboard は出したくない。それはどうするんだと。UITextField の場合は結構情報があるけれども、UITextView については情報が少ない。
いろいろ試してみた結果、
_textView.selectable = YES;
_textView.editable = NO;
こうすることで、選択はできるけれども編集はできない(キーボードは出さない)ということになる。