在开发中有时候会遇到这样的需求,就是一个文本框里面的内容不容许用户复制,或者不容许用户将其它地方复制的内容粘贴进来,本文交给你怎么实现禁止 UITextField 的粘贴、复制。spa
在 UITextField 中有这样一个方法:-canPerformAction:withSender:,下面来重写这个方法:code
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ NSLog(@"%@", NSStringFromSelector(action)); return YES; }
运行程序,长按文本框,会出现一个菜单:orm
你看,剪切、复制、选择、粘贴等功能都在里面了,只要让你不但愿有的功能不出如今这个菜单上,或者干脆没有这个菜单就能达到咱们的目的了。开发
怎么弄呢?it
还记得上面重写的那个方法吗?看看控制台打印了啥吧:io
这都是在长按文本框的时候打印的。你看 -cut: -cop: -paste: 这些方法都在这里,再结合这个方法的名字就能明白了,在弹出那个菜单以前,系统会调用 -canPerformAction:withSender: 这个方法一一判断每一个功能是否容许使用。因此只须要在对应的action出现的时候返回NO就能够了:ast
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ if (action == @selector(copy:) || action == @selector(paste:)) { return NO; } return YES; }
再运行程序,长按文本框:form
这回找找吧复制和粘贴没有了,咱们的目的实现了。class
若是根本就不想看见这个菜单的话,-canPerformAction:withSender: 直接 return NO 就好了,这样不管怎么长按,这个黑色的菜单都不会出现了。select