1. 程式人生 > >iOS監聽鍵盤的刪除按鍵事件

iOS監聽鍵盤的刪除按鍵事件

  1. 需求場景描述
    最近專案裡有個場景,搜尋新增成員的時候,需要類似於微信建立討論組加人時的效果:啟動搜尋輸入文字,點選刪除文字,當文字全刪除完的時候,在點選刪除按鍵,可以刪除選中的人,或者取消搜尋狀態。

  2. 技術要點
    這裡,最主要的難點就是監聽鍵盤刪除鍵的點選事件。不管你用的是UITextView還是UITextField,當它們本身沒有內容的時候點選刪除按鍵,其實delegate是沒有任何響應的,這裡就需要我們用其它的辦法監聽到點選事件。

  3. 實現過程
    檢視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
    自定義的KeyInputTextField
    .m檔案裡的實現

    到此,我們已經能知道鍵盤的刪除事件了,後面需要做什麼邏輯,直接在deleteBackward回撥裡做就OK!