UITextfield 禁用复制粘贴操作(添加分类属性控制)

1 UIResponder

利用抽象接口 UIResponder 的 - (BOOL)canPerformAction:(SEL)action withSender:(nullable id)sender 方法控制能否做编辑操作, 返回YES 可编辑,NO不可做编辑操作;
常见控制的操作方法(协议UIResponderStandardEditActions):

- (void)cut:(nullable id)sender NS_AVAILABLE_IOS(3_0);
- (void)copy:(nullable id)sender NS_AVAILABLE_IOS(3_0);
- (void)paste:(nullable id)sender NS_AVAILABLE_IOS(3_0);
...

2 给UITextField分类添加一个属性,标记UITextField对象能否做编辑操作

3 代码如下

分类.h文件

记得导入runtime库

#import <objc/runtime.h>

@property (nonatomic) BOOL canPerformAction;

分类.m文件

// MARK: 分类添加属性
- (void)setCanPerformAction:(BOOL)canPerformAction {
    objc_setAssociatedObject(self, @selector(canPerformAction), @(canPerformAction), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (BOOL)canPerformAction {
    id value = objc_getAssociatedObject(self, _cmd);
    return [value boolValue];
}

// MARK: 控制textfield能否做编辑操作
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    return self.canPerformAction;
}

4 禁用部分编辑功能

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    if (action == @selector(copy:)) { // 禁用复制功能
        return NO;
    } else {
        return YES;
    }
}

参考

参考1:canPerfromAction 使用方法
参考2:编辑操作方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容