为实现监听UITextfield及UITextView的删除键监听,最简单的办法是利用继承重写deleteBackward方法,但是继承的话还是比较重的。我看了网上的也有在分类中利用runtime实现的方式,但是需要重写代理,感觉还是比较麻烦,所以我改进了实现方式,使使用更快捷简单。
创建分类实现
#import "UITextField+ZL.h"
#import <objc/runtime.h>
@implementation UITextField (ZL)
+ (void)load{
Method systemMethod = class_getInstanceMethod([self class], @selector(deleteBackward));
Method customMethod = class_getInstanceMethod([self class], @selector(zl_deleteBackward));
//交换系统deleteBackward方法的IMP为自定义方法
method_exchangeImplementations(systemMethod, customMethod);
}
- (void)zl_deleteBackward{
[self zl_deleteBackward];
if ([self.delegate respondsToSelector:NSSelectorFromString(@"textFieldDidDeleteBackward:")]) {
//代理执行
[self.delegate performSelector:NS