zoukankan      html  css  js  c++  java
  • 禁止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

  • 相关阅读:
    Java中遍历Set集合的方法
    分布式RPC框架Apache Dubbo
    CSS:页面美化和布局控制
    JavaScript实例
    Codeforces Round #604 题解
    洛谷P1533 可怜的狗狗题解
    Educational Codeforces Round 81 题解
    P1494 [国家集训队]小Z的袜子 题解
    洛谷P1283 平板涂色题解
    洛谷P1220 关路灯题解
  • 原文地址:https://www.cnblogs.com/starainDou/p/5188485.html
Copyright © 2011-2022 走看看