Проблемы нижнего колонтитула раздела UITableView при отображении и скрытии клавиатуры - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть UITableView с верхними и нижними колонтитулами.В одной ячейке у меня есть UITextField, который запускает отображение клавиатуры.

Когда появляется клавиатура, только иногда (это как-то зависит от позиции прокрутки таблицы) последний нижний колонтитул правильно перемещается вверх, поэтому этот нижний колонтитул появляется чуть выше keyboard.

Но когда я снова скрываю клавиатуру, нижний колонтитул остается на этом месте, пока таблица не обновится при дальнейшем взаимодействии с пользователем.Как я могу избежать этого или хотя бы программно применить обновление?

tableView.reloadData() не помогает.

Обратите внимание, что это происходит только на iPhone, а не на iPad.Протестировано на данный момент только с iOS 12.2.

1 Ответ

0 голосов
/ 11 апреля 2019
override func viewWillAppear(_ animated: Bool) {
    self.registerForKeyboardNotifications()
    super.viewWillAppear(animated)
}

override func viewWillDisappear(_ animated: Bool) {
    self.deregisterFromKeyboardNotifications()
    super.viewWillDisappear(animated)
}



func registerForKeyboardNotifications(){
    //Adding notifies on keyboard appearing
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(notification:)), name:
        UIResponder.keyboardWillShowNotification, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}

func deregisterFromKeyboardNotifications(){
    //Removing notifies on keyboard appearing
    NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil)
    NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
}


@objc func keyboardWasShown(notification: NSNotification){

    //Need to calculate keyboard exact size due to Apple suggestions
    var info = notification.userInfo!
    let keyboardSize = (info[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue
    //let contentInsets : UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: keyboardSize!.size.height, right: 0.0)
}

@objc func keyboardWillBeHidden(notification: NSNotification){
    //Once keyboard disappears, restore original positions
    //var info = notification.userInfo!
    //let keyboardSize = (info[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
    //let contentInsets : UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: -keyboardSize!.height, right: 0.0)

     tableview.transform = CGAffineTransformMakeScale(1, -1);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...