禁止UITextField 使用粘貼復制功能


在開發中有時候會遇到這樣的需求,就是一個文本框里面的內容不允許用戶復制,或者不允許用戶將其它地方復制的內容粘貼進來,本文交給你怎么實現禁止 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM