-
需求场景描述
最近项目里有个场景,搜索添加成员的时候,需要类似于微信创建讨论组加人时的效果:启动搜索输入文本,点击删除文本,当文本全删除完的时候,在点击删除按键,可以删除选中的人,或者取消搜索状态。 -
技术要点
这里,最主要的难点就是监听键盘删除键的点击事件。不管你用的是UITextView还是UITextField,当它们本身没有内容的时候点击删除按键,其实delegate是没有任何响应的,这里就需要我们用其它的办法监听到点击事件。 -
实现过程
查看API我们不难发现,其实系统是有事件抛出来的:``` @protocol UIKeyInput <UITextInputTraits> - (BOOL)hasText; - (void)insertText:(NSString *)text; - (void)deleteBackward; @end ```
所以,我们现在要做的就是实现这个协议,拿到deleteBackward的回调。
不过这个协议已经被UITextField实现了:NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextInput, NSCoding>
但是UITextFieldDelegate并没有抛出来。
所以,我们要做的就是从UITextField里面抛出这个协议。
自定义一个类,
iOS监听键盘的删除按键事件
最新推荐文章于 2023-06-29 11:48:35 发布