禁止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
禁止UITextField 使用粘贴复制功能的更多相关文章
- Javascript禁止网页复制粘贴效果,或者复制时自动添加来源信息
一.禁止复制 使用方法:在oncopy事件中return false oncopy="return false;" 1.禁止复制网页内容 <body oncopy=" ...
- PyQt:自定义QLineEdit禁止选中复制粘贴
说明 自定义的QLineEdit,当输入文本之后,禁止选中复制粘贴等操作 实现方法 MyQLineEdit类继承了QLineEdit类,并重写QLineEdit类中的mouseMoveEvent方法和 ...
- js进阶 9-8 html标签如何实现禁止复制和粘贴
js进阶 9-8 html标签如何实现禁止复制和粘贴 一.总结 一句话总结: 1.在oncopy方法中return false即可阻止在控件中复制内容 2.在onpaste方法中return fal ...
- 禁用UITextField复制粘贴等方法
要实现此功能只需创建一个继承自UITextField的子类,重写以下方法即可. - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ ...
- html页面禁止用户右键粘贴复制保存的代码
HTML页面禁止选择.页面禁止复制.页面禁止右键 原创古城寨主2018-03-01 17:50:59评论(1)228人阅读 HTML页面内容禁止选择.复制.右键 刚在一个看一个站点的源代码的的时候 ...
- input禁止复制、粘贴、剪切
<input type="text" autocomplete="off"> <!-- autocomplete="off" ...
- 网站内容禁止复制和粘贴、另存为的js代码(转)
1.使右键和复制失效 方法1: 在网页中加入以下代码: 代码如下: <script language="Javascript"> document.oncontextm ...
- Vim 的粘贴复制功能
Vim作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情.每当学会了vim的一个新功能,就会很大地提高工作效率.有人使用vim几十年,还没有完全掌握vim的功能,这也说明了vim ...
- 网站内容禁止复制和粘贴、另存为的js代码
1.使右键和复制失效 方法1: 在网页中加入以下代码: 复制代码代码如下: <script language="Javascript"> document.oncont ...
随机推荐
- 异步tcp通信——APM.ConsoleDemo
APM测试 俗话说麻雀虽小,五脏俱全.apm虽然简单,但是可以实现单机高性能消息推送(可以采用redis.kafka等改造成大型分布式消息推送服务器). 测试demo: using System; u ...
- datagrid加下拉列表dropdownlist
datagrid中代码: <asp:datagrid id="dgList" runat="server" ItemStyle-HorizontalAli ...
- C#—集合(Collection)
1.栈(stack<T>) using System; using System.Collections.Generic; using System.Linq; using System. ...
- MemCache缓存和C#自带的Cache缓存
1.MemCache: //初始化 static SockIOPool _pool; // 创建Memcached private static MemcachedClient Create(stri ...
- Css简介
- 【转】 UITableView 的indexPath
原文:http://blog.csdn.net/mengtnt/article/details/6733691 前面说过了viewController的一些基本注意事项.这里针对不同的viewCont ...
- iOS开发之字典数据建立模型步骤
1. 在控制器属性的(questions)set方法中完成字典转模型的操作 - (NSArray *)questions { if (nil == _questions) { //1.加载plist文 ...
- MFC框架类、文档类、视图类相互访问的方法
1.获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2.获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFr ...
- jQuery MVC 科室异步联动
//科室改变,级联医生 js $("#DepartmentId").change(function () { if (isNaN($(this).val())) { $(" ...
- 移除IOS下按钮的原生样式
写WAP页面的时候 一定要加上这组样式,以避免在IOS下面按钮被系统原生样式影响 input,textarea {outline-style:none;-webkit-appearance:none ...