私が使用した:
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
}
}
キーボードの高さを取得するように変更するには、ただし、高さには候補バーが含まれていません。 キーボードの高さと候補バーの高さの値を取得するにはどうすればよいですか?
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
}
}
最初に、キーボードが表示されるときにトリガーされる通知を登録する必要があります。
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
}
}
UIKeyboardFrameEndUserInfoKey
の代わりにUIKeyboardFrameBeginUserInfoKey
を使用すると、正しいキーボードの高さが返されます。たとえば、ツールバーのないキーボードの場合、高さ216.0を返します。ツールバー付き-260.0
代わりに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
}
}