在開發中有時候會遇到這樣的需求,就是一個文本框里面的內容不允許用戶復制,或者不允許用戶將其它地方復制的內容粘貼進來,本文交給你怎么實現禁止 UITextField 的粘貼、復制。
在 UITextField 中有這樣一個方法:-canPerformAction:withSender:,下面來重寫這個方法:
|
1
2
3
4
|
- (
BOOL
)canPerformAction:(SEL)action withSender:(id)sender{
NSLog(@
"%@"
, NSStringFromSelector(action));
return
YES;
}
|
運行程序,長按文本框,會出現一個菜單:
你看,剪切、復制、選擇、粘貼等功能都在里面了,只要讓你不希望有的功能不出現在這個菜單上,或者干脆沒有這個菜單就能達到我們的目的了。
怎么弄呢?
還記得上面重寫的那個方法嗎?看看控制台打印了啥吧:
這都是在長按文本框的時候打印的。你看 -cut: -cop: -paste: 這些方法都在這里,再結合這個方法的名字就能明白了,在彈出那個菜單之前,系統會調用 -canPerformAction:withSender: 這個方法一一判斷每個功能是否允許使用。所以只需要在對應的action出現的時候返回NO就可以了:
|
1
2
3
4
5
6
|
- (
BOOL
)canPerformAction:(SEL)action withSender:(id)sender{
if
(action == @selector(copy:) || action == @selector(paste:)) {
return
NO;
}
return
YES;
}
|
再運行程序,長按文本框:
這回找找吧復制和粘貼沒有了,我們的目的實現了。
如果根本就不想看見這個菜單的話,-canPerformAction:withSender: 直接 return NO 就行了,這樣無論怎么長按,這個黑色的菜單都不會出現了。
豆電雨 摘自 http://my.oschina.net/javaeee/blog/522377



