iOS監聽鍵盤的刪除按鍵事件
阿新 • • 發佈:2019-01-25
需求場景描述
最近專案裡有個場景,搜尋新增成員的時候,需要類似於微信建立討論組加人時的效果:啟動搜尋輸入文字,點選刪除文字,當文字全刪除完的時候,在點選刪除按鍵,可以刪除選中的人,或者取消搜尋狀態。技術要點
這裡,最主要的難點就是監聽鍵盤刪除鍵的點選事件。不管你用的是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裡面丟擲這個協議。
自定義一個類,繼承UITextField
到此,我們已經能知道鍵盤的刪除事件了,後面需要做什麼邏輯,直接在deleteBackward回撥裡做就OK!