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;
}
}
网友评论