cómo obtener la altura del teclado, incluyendo la barra de sugerencias en swift 4

He utilizado :

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
      }
}

a cambio para obtener la altura del teclado, pero la altura no incluye la barra de sugerencias. ¿Cómo puedo obtener el valor de la altura del teclado plus en la barra de sugerencias de altura?

4 Respuestas

  • Enrique Bermúdez
    8 de junio de 2018

    El uso de UIKeyboardFrameEndUserInfoKey en lugar de UIKeyboardFrameBeginUserInfoKey y UIKeyboardDidShow en lugar de 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
                }
    
            }
    
  • Mahendra GP
    8 de junio de 2018

    En primer lugar usted necesita para registrar la notificación de que se activa cuando el teclado será visible.

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

    Obtener la altura del teclado en el método...

    @objc func keyboardWillShow(_ notification: Notification) {
    
     if let keyboardFrame: NSValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue {
        let keyboardRectangle = keyboardFrame.cgRectValue
        let keyboardHeight = keyboardRectangle.height
     }
    }  
    
  • PGDev
    8 de junio de 2018

    Trate de usar UIKeyboardDidShow en su lugar.

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

    Usted va a obtener la devolución de llamada en keyboardWasShown método siempre es el teclado aparece en la pantalla,

    @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
        }
    }
    
  • IvanPavliuk
    4 de mayo de 2019

    El uso de la UIKeyboardFrameEndUserInfoKey en lugar de UIKeyboardFrameBeginUserInfoKey devuelve el correcto de la altura del teclado. Por ejemplo, si el teclado sin la barra de herramientas, devuelve 216.0 altura. Con la barra de herramientas - 260.0