Move ScrollView when keyboard show/hide

Krauser Huang
Mar 8, 2022

解決PM問你他看不到自己在UITextField打了什麼內容

前置作業

你必須有UITextField然後他的位置在偏下面

鍵盤收起

有兩種做法

  1. 鍵盤內建的return鍵收起
  2. 點擊鍵盤外畫面收起
return是指這個(但使用者不一定知道這個按下去會收起來)

可透過UITextFieldDelegate的textFieldShouldReturn收起鍵盤

但記得將UITextField的代理人(delegate)設成自己(ViewController)

使用點擊判斷動作來收起鍵盤

endEditing只要有找到該view上有textField就會強制resign

根據UITextField位置讓鍵盤移動

設定NotificationCenter

  • UIResponder.keyboardWillShowNotification(鍵盤即將顯示)
  • UIResponder.keyboardWillHideNotification(鍵盤即將消失)

NotificationCenter有可以偵測鍵盤顯示消失的項目可以使用,透過監聽顯示、消失可以做對應的動作,利用notification的userInfo裡有一個keyboardFrameEndUserInfoKey可以取得當鍵盤動畫執行完後其鍵盤大小

再利用設定contentInset來增加、減少scrollView的高度來避開鍵盤

--

--