Ищем 2 наблюдателей за клавиатурой. 1, который срабатывает, когда клавиатура собирается показать, и 1, который срабатывает, только когда клавиатура скрывается - PullRequest
0 голосов
/ 17 июня 2020

Я изменяю ограничение, когда клавиатура отображается и скрывается на экране, чтобы можно было отобразить некоторый текст в нижней части представления. Я создал 2 наблюдателя свойств, keyboardWillShowNotification и keyboardWillHideNotification. Когда приложение изначально запускается, и я поднимаю клавиатуру, keyboardWillShowNotification запускается, как ожидалось, , но , когда я скрываю клавиатуру, запускаются оба keyboardWillHideNotification и keyboardWillShowNotification, которые вызвало неожиданное поведение при переключении нижнего ограничения.

Есть ли комбинация наблюдателя клавиатуры, при которой один наблюдатель только запускается, когда клавиатура собирается показать, а другой наблюдатель только срабатывает, когда клавиатура скрывается?

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let notificationCenter = NotificationCenter.default

        notificationCenter.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: nil) { (notification) in
        print("show")

        }

        notificationCenter.addObserver(forName: UIResponder.keyboardWillHideNotification, object: nil, queue: nil) { (notification) in
        print("hide")

        }


    }


}

1 Ответ

0 голосов
/ 17 июня 2020

Я видел эту ошибку. Что я делаю, так это выручаю из любого обработчика уведомлений, если фрейм фактически не собирается меняться:

let d = notification.userInfo!
let beginning = d[UIResponder.keyboardFrameBeginUserInfoKey] as! CGRect
let ending = d[UIResponder.keyboardFrameEndUserInfoKey] as! CGRect
if beginning == ending {return}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...