Objective-C监听键盘删除按钮
2016-03-28 18:10
351 查看
响应键盘删除按钮的事件,常规的是根据UITextfield或者UISearchBar的didChange代理方法中内同的改变来判断是否进行了点击删除按钮。但是当输入框没有内容时,就无法捕捉到删除的事件了。例如微信选择好友时用键盘的删除按钮删除已选择的好友头像。
实现的思路是利用OC的运行时机制,替换掉系统的删除runtime函数。首先建一个UItextfield的category:UITextField+YX
头文件代码:
源文件中的代码:
在使用的文件中遵循YXTextFieldDelegate代理,代理的方法即为点击删除按钮事件:
github:监听键盘删除按钮,仿微信好友选择
实现的思路是利用OC的运行时机制,替换掉系统的删除runtime函数。首先建一个UItextfield的category:UITextField+YX
头文件代码:
#import <UIKit/UIKit.h> @protocol YXTextFieldDelegate <UITextFieldDelegate> @optional - (void)textFieldDidDeleteBackward:(UITextField *)textField; @end @interface UITextField (YX) @property (weak, nonatomic) id<YXTextFieldDelegate> delegate; @end /** * 监听删除按钮 * object:UITextField */ extern NSString * const YXTextFieldDidDeleteBackwardNotification;
源文件中的代码:
#import "UITextField+YX.h" #import <objc/runtime.h> NSString * const YXTextFieldDidDeleteBackwardNotification = @"textfield_did_notification"; @implementation UITextField(YX) + (void)load { Method method1 = class_getInstanceMethod([self class], NSSelectorFromString(@"deleteBackward")); Method method2 = class_getInstanceMethod([self class], @selector(yx_deleteBackward)); method_exchangeImplementations(method1, method2); } - (void)yx_deleteBackward { [self yx_deleteBackward]; if ([self.delegate respondsToSelector:@selector(textFieldDidDeleteBackward:)]) { id <YXTextFieldDelegate> delegate = (id<YXTextFieldDelegate>)self.delegate; [delegate textFieldDidDeleteBackward:self]; } [[NSNotificationCenter defaultCenter] postNotificationName:YXTextFieldDidDeleteBackwardNotification object:self]; } @end
在使用的文件中遵循YXTextFieldDelegate代理,代理的方法即为点击删除按钮事件:
- (void)textFieldDidDeleteBackward:(UITextField *)textField { //删除事件 }
github:监听键盘删除按钮,仿微信好友选择
相关文章推荐
- JavaScript之基础-14 JavaScript Object对象(概述、创建对象、属性、方法)
- JSONObject的fromObject方法有什么作用
- J2ObjC 1.0 发布,将 Java 转换为 Objective-C
- NSObjCRuntime, NSZone, NSObject报错Unknown type name 'NSString'
- 懒加载 warning: could not load any Objective-C class information. This will significantly reduce the qu
- Non-Maximum Suppression for Object Detection in Python
- Object-C 中 的重要类型
- Object-C基础(15)——NSBundle与对象归档
- WaitForSingleObject函数的使用
- Object对象转换成json
- Object-C基础(14)——文件
- Object-C基础(13)——字典与谓词
- 集合类(Objective-C & Swift)
- 快速理解Runtime of Objective-C
- 论文阅读笔记:You Only Look Once: Unified, Real-Time Object Detection
- Object-C基础(12)——容器
- javascript下用ActiveXObject控件替换word书签,将内容导出到word后打印第1/2页
- php 执行mssql 里的语句,报错 The EXECUTE permission was denied on the object
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- Object-C基础(11)——字符串、日期相关类与拷贝