быстрый наблюдатель не работает - PullRequest
0 голосов
/ 03 июня 2018
    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: .UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: .UIKeyboardWillHide, object: nil)
    print("addd observer")

}
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillShow, object: nil)
    NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillHide, object: nil)
}

func keyboardWillShow(_ sender: Notification) {
    let keyboardSize = (sender.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
    print("show")
    if(activeTectField != Lable_title && keyboard_status == false)
    {

        boxview.frame.origin.y -= (keyboardSize?.height)!
        keyboard_status = true

    }

}

func keyboardWillHide(_ sender: Notification) {

    let keyboardSize = (sender.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
    if(keyboard_status == true){
    boxview.frame.origin.y = 0
    boxview.layoutIfNeeded()
    keyboard_status = false
    }

}

Я добавляю наблюдателя для перемещения вида, когда клавиатура всплывает, и она работает сначала, но после нескольких щелчков она не работает.В viewWillAppear() наблюдатель уже был добавлен, но клавиатура не всплывала, а также keyboardwillshow() не было запущено.Как я могу решить эту проблему?Любой совет приветствуется

1 Ответ

0 голосов
/ 03 июня 2018

Чтобы использовать шаблон назначения / селектора, эти методы должны быть совместимы с Objective-C.

Предшествовать вашим методам клавиатуры с модификатором @objc.

@objc func keyboardWillShow(_ sender: Notification) {
...