我正在努力在iOS顯示/隱藏鍵盤時移動我的視圖。 (對不起,不知道如何格式化代碼高亮)Swift 3 move當顯示鍵盤時顯示 - 錯誤KeyboardSize
我實現了下列觀察員:
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: 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/2
}
}
}
func keyboardWillShow(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/2
}
}
}
我增加了一個擴展:
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
view.endEditing(true)
}
}
所以所有這一切工作得很好。 但是,一旦鍵盤認爲顯示單詞建議是個好主意,我就會遇到問題。鍵盤變得越來越高,視圖變得太過分了。 這主要發生在用戶從僅限數字的鍵盤切換到另一個正常鍵盤的文本字段(有時帶有建議)。 那麼,有沒有辦法知道鍵盤當前是否顯示了單詞建議(或任何其他'正常'高度差異)? 我想過使用全局變量的鍵盤高度的keyboardWillShow函數,但這將無法正常工作,因爲我要麼移動到遠或更少,當他們在不同的鍵盤高度(參見數字鍵盤)的文本字段之間切換。 任何幫助,高度讚賞!提前致謝!編輯: 啊!我認爲將willShowKeyboard -height存儲在全局變量中,並將其與willHideKeyboard進行比較 - 高度可能有效。儘管如此,我仍然開放更順暢的解決方案!
我爲什麼要低調投票?我遇到了問題,自己找到了解決方法。有時候我沒有得到SO用戶。 – Akaino