[英]Managing UIView when keyboard appears
我正在處理鍵盤覆蓋剛剛獲得第一響應者的元素時移動視圖的問題。 我從研究這個問題開始,這給了我一個很好的開端。 將觀察者添加到UIKeyboardWillShow
和UIKeyboardWillHide
我以以下代碼結束:
func keyboardWillShow(notification: Notification) {
guard let userInfo = notification.userInfo,
let kbRect = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue,
let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double else {
return
}
let kbSize = kbRect.cgRectValue.size
UIView.animate(withDuration: duration) {
self.view.transform = CGAffineTransform(translationX: 0, y: -kbSize.height)
}
}
func keyboardWillHide(notification: Notification) {
UIView.animate(withDuration: 0.3) {
self.view.transform = CGAffineTransform(translationX: 0, y: 0)
}
}
在文本字段獲得第一響應者的情況下,視圖可以上下移動,這在某種意義上來說是很好的。 但是,當按下一個鍵時,視圖會再次移動,從而失去了首先將其向上移動的目的。 我做了一些GIF以便更好地描述這種不希望的行為,第一次出現和消失鍵盤時都顯示正確的行為,第二次在按下鍵時顯示了不希望的行為。
因此,問題是,有沒有一種方法可以防止按下鍵時視圖移動? 當用戶使用鍵盤插入文本時,我希望視圖保持“向上”。
您應該移動視圖應用程序,而不是對其進行轉換,請使用:
self.view.frame.origin.y -= kbSize.height
轉換的行為應該像現在一樣
將您的UIView設置為插座,並將此代碼插入viewDidLoad中
yourView.translatesAutoresizingMaskIntoConstraints = true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.