0
私のアプリケーションのビューでは、ScrollView内にいくつかのTextFieldがあります。 UIKeyboardWillShow/WillHide通知を実装しました。しかし、私はそれにいくつかの問題があります。テキストフィールドをタップすると、WillShowは完璧に動作しますが、キーボードが非表示になってテキストフィールドを再度タップした後は、もう動作しません。私は別のテキストフィールドと同じ問題をタップします。別のテキストフィールドで2〜3回タップした後、再び同じ問題が発生します。これは私が使用して私のコードです:UIKeyboardWillShow通知に関する問題
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil)
のfuncs:
@objc func keyboardWillShow(notification: Notification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if view.frame.origin.y == 0 {
view.frame.origin.y -= keyboardSize.height/2
}
}
}
@objc func keyboardWillHide(notification: Notification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if view.frame.origin.y != 0{
view.frame.origin.y += keyboardSize.height/2
}
}
}
と、これは、ユーザーがビュー内のどこかをタップしたときに、私はキーボードを隠す方法です:
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
view.endEditing(true)
}
私ができます何が問題なのか、どのように修正できるのかを見つけ出すことはできません。私のiPhone 6にiOS 11.0.3があります。