最近在做一个键盘判处功能,当输入框内容清空了之后,我们想要再获取删除事件,就比较麻烦了,UITextField并没有删除的代理或者target事件。
一、分析UITextField
UITextField里面用的其实是UIKeyInput,先看UIKeyInput.h
@protocol UIKeyInput <UITextInputTraits>
- (BOOL)hasText;
- (void)insertText:(NSString *)text;
- (void)deleteBackward; // 删除方法
@end
二、解决办法
所以,我们只需要继承一个UITextField,然后重写deleteBackward方法就可以了。
头文件
#import <UIKit/UIKit.h>
@class WDTextField;
@protocol WDTextFieldDelegate <NSObject>
- (void)wd_textFieldDeleteBackward:(WDTextField *)textField;
@end
@interface WDTextField : UITextField
@property (nonatomic, assign) id <WDTextFieldDelegate> wd_delegate;
@end
实现文件
@implementation WDTextField
- (void)deleteBackward {
[super deleteBackward];
if ([self.wd_delegate respondsToSelector:@selector(wd_textFieldDeleteBackward:)]) {
[self.wd_delegate wd_textFieldDeleteBackward:self];
}
}