UITextViewでコピペ機能を効かないように出来るか
開発していてよくわからないことがあったんですが、
世界のどこかには知っている人がいるかもしれないので書いておきます。
UITextViewでだらだらと文章を表示している場合、
間違えてコピペ機能が動いてしまうことがあります。
そんなことが起こってしまうUI設計が糞だという話は
一旦おいておくとして、
UITextViewでコピペ機能を効かないようにできませんかね、というのが今日の話題。
オフィシャルのUIPasteboard解説やhow disable copy ,cut,select ,select All in UITextViewを見た感じでは、
UITextViewのサブクラスを作ってcanPerformAction:withSenderを上書きしてやればよさそうです。
ということで、
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{ if(action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:) || action == @selector(select:) || action == @selector(selectAll:)){ return NO; } return [super canPerformAction:action withSender:sender]; }
とか書いてみました。
stackoverflowの説明まんまですね。
しかしながら、これがうまくいきません。
調べた感じでは確かにcopy:やpaste:が呼び出されたタイミングで
NOが返っているものの、
普通にコピペは機能してしまいます。