web-dev-qa-db-ja.com

Swift 4の候補バーを含むキーボードの高さを取得する方法

私が使用した:

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

キーボードの高さを取得するように変更するには、ただし、高さには候補バーが含まれていませんキーボードの高さと候補バーの高さの値を取得するにはどうすればよいですか?

15
Saved Files

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
            }

        }
1

最初に、キーボードが表示されるときにトリガーされる通知を登録する必要があります。

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

UIKeyboardFrameEndUserInfoKeyの代わりにUIKeyboardFrameBeginUserInfoKeyを使用すると、正しいキーボードの高さが返されます。たとえば、ツールバーのないキーボードの場合、高さ216.0を返します。ツールバー付き-260.0

0
IvanPavliuk

代わりに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
PGDev