Как получить высоту клавиатуры, включая панель предложений в Swift 4 - PullRequest
0 голосов
/ 08 июня 2018

Я использовал:

NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)

@objc func keyboardWillShow(notification: NSNotification) {
      if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
      let keyboardHeight : Int = Int(keyboardSize.height)
      print("keyboardHeight",keyboardHeight)
      KeyboardHeightVar = keyboardHeight
      }
}

, чтобы изменить высоту клавиатуры, , но высота не включает панель предложений . Как получить значение высоты клавиатуры плюс высота панели подсказок?

Ответы [ 4 ]

0 голосов
/ 04 мая 2019

Использование UIKeyboardFrameEndUserInfoKey вместо UIKeyboardFrameBeginUserInfoKey возвращает правильную высоту клавиатуры.Например, если клавиатура без панели инструментов, она возвращает 216.0 высоты.С панелью инструментов - 260,0

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

Сначала необходимо зарегистрироваться для уведомления, которое срабатывает, когда клавиатура будет видна.

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)

Получить высоту клавиатуры в методе ...

@objc func keyboardWillShow(_ notification: Notification) {

 if let keyboardFrame: NSValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue {
    let keyboardRectangle = keyboardFrame.cgRectValue
    let keyboardHeight = keyboardRectangle.height
 }
}  
0 голосов
/ 08 июня 2018

Попробуйте вместо этого использовать UIKeyboardDidShow.

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(_:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)

Вы получите обратный вызов в методе keyboardWasShown, когда на экране появится клавиатура,

@objc func keyboardWasShown(_ notification : Notification)
{
    let info = (notification as NSNotification).userInfo
    let value = info?[UIKeyboardFrameEndUserInfoKey]
    if let rawFrame = (value as AnyObject).cgRectValue
    {
        let keyboardFrame = self.reportItTableView.convert(rawFrame, from: nil)
        let keyboardHeight = keyboardFrame.height //Height of the keyboard
    }
}
0 голосов
/ 08 июня 2018

Используйте UIKeyboardFrameEndUserInfoKey вместо UIKeyboardFrameBeginUserInfoKey и UIKeyboardDidShow вместо UIKeyboardWillShow.

NotificationCenter.default.addObserver(self, selector: 

#selector(keyboardWillShow), name: .UIKeyboardDidShow, object: nil)
    @objc func keyboardWillShow(notification: NSNotification) {

            if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
                let keyboardHeight : Int = Int(keyboardSize.height)
                print("keyboardHeight",keyboardHeight)
                KeyboardHeightVar = keyboardHeight
            }

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