我環顧四周,發現this後顯示鍵盤出現時移動視圖。它工作的很好,隨時隨地移動鍵盤,我點擊一個UITextField
。問題是我有三個UITextField
s,並且只有當鍵盤出現在UITextField
以上時,鍵盤纔會移動。我也查看了蘋果documentation,並發現了一些有用的信息,但我仍然沒有獲得所需的功能。當鍵盤顯示在UITextField上時移動視圖
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
var aRect = self.view.frame;
aRect.size.height -= keyboardSize.size.height
if self.view.frame.origin.y == 0{
if aRect.contains(activeField.frame.origin){
self.view.frame.origin.y -= keyboardSize.height
}
}
}
}
func textFieldDidBeginEditing(_ textField: UITextField) {
activeField = textField
}
func textFieldDidEndEditing(_ textField: UITextField) {
activeField = nil
}
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y != 0{
self.view.frame.origin.y += keyboardSize.height
}
}
}
從Apple文檔我只是把我在那裏創建aRect
,然後檢查點與contains
功能交叉的部分。我希望這會讓視圖僅在鍵盤與文本框重疊時才移動,否則保持視圖不變。由於某些原因,我不完全瞭解,情況並非如此。在任何文本字段被點擊的情況下,鍵盤將移動視圖(即使對於某些它不應該)。我現在玩了一會兒,並嘗試調試但未成功。有任何想法嗎?
編輯:我做了一些調試,似乎aRect.contains(...)返回true時,所有的文本字段被點擊,但實際上它不應該。是否包含正確的使用方法?
請檢查我編輯的答案。 –