[Objective-C] 解決點擊 UITextField 輸入框後被鍵盤升起擋住

有時候因為介面設計的關係,點擊 UITextField 輸入框後就會被升起來的鍵盤擋住。

最簡單的方法:

1. viewDidLoad 註冊兩個 NotificationCenter 來監控鍵盤升起來以及收起來。  
  • UIKeyboardWillShowNotification 鍵盤將升起來。    
  • UIKeyboardWillHideNotification 鍵盤將收起來。


2.  鍵盤升起來的時候會執行 keyboardWillShow 方法。
  • keyboardFram:用 UIKeyboardFrameEndUserInfoKey 取得鍵盤的尺寸
  • keyboardHeight:取的鍵盤的高。
  • keyboardDuration:用 UIKeyboardAnimationDurationUserInfoKey 取得鍵盤上升的動畫時間。    
  • 使用 UIView 動畫,動畫時間帶入 keyboardDuration,並將 view y 座標設定為負的鍵盤高度,這樣 view 就會跟著鍵盤升起來的時候也跟著往上提高。


3. 鍵盤收起來的時候會執行 keyboardWillHide 方法。   
  • 使用 UIView 動畫,動畫時間帶入 keyboardDuration,並將 view y 座標設定 0,這樣    view 就會歸回原位囉。


- > Sampe Code:
https://www.dropbox.com/s/8mb02igmxxt0y2u/NotificationKeyboard.zip?dl=0

留言

  1. 我覺得監聽 UIKeyboardWillChangeFrame
    也是不錯的選擇

    回覆刪除

張貼留言

這個網誌中的熱門文章

Apple App Store 加速上架審查

[Objective-C] 如何讓 iPhone 也能顯示出跟 iPad 一樣的 Popover 視窗