Versuchen Sie mit diesem Pod https://github.com/hackiftekhar/IQKeyboardManager, Es deckt alle Tastatur-Szenario.
Wenn Sie benutzerdefinierte Code verwenden möchten, müssen Sie für abonnieren UIKeyboardWillShow und UIKeyboardWillHide in viewWillAppear und abmelden in viewWillDisappear. Nach diesem Override touchesBegan wird dies alle Ihre Berührungen auf dem Bildschirm behandeln, können Sie in dieser Funktion beenden.
Mein Beispielcode:
override func viewWillAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
UIView.animate(withDuration: 1, animations: {
self.view.bounds.origin.y += keyboardSize.height
}
}
}
func keyboardWillHide(notification: NSNotification) {
self.view.bounds.origin.y = 0
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
schließlich den Grund finden. Es wird dieses Problem verursachen, wenn eine Zelle höher als die Bildschirmhöhe ist. –