Я работал над получением высоты клавиатуры в swift 4.2.Я использую Центр уведомлений для вызова функции, когда на клавиатуре отображается сообщение, которое принимает уведомление в качестве параметра, что я считаю довольно стандартным?Здесь я хочу рассчитать высоту.Однако в объекте уведомления отсутствуют данные, и я не могу рассчитать высоту.
NSConcreteNotification 0x16e43a710 {
name = UIKeyboardDidShowNotification; userInfo = {
UIKeyboardAnimationCurveUserInfoKey = 7;
UIKeyboardAnimationDurationUserInfoKey = "0.25";
UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {0, 0}}";
UIKeyboardCenterBeginUserInfoKey = "NSPoint: {0, 0}";
UIKeyboardCenterEndUserInfoKey = "NSPoint: {0, 0}";
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {0, 0}}";
UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 0}, {0, 0}}";
UIKeyboardIsLocalUserInfoKey = 1;
}
}
Я вызываю функцию commonInit из моего метода init, которая устанавливает методы для вызова:
private func commonInit() {
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(notification:)), name: UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
Функция KeyboardWillShow
@objc private func keyboardWillShow(notification:NSNotification) {
let userInfo = notification.userInfo! as NSDictionary
let keyboardFrame = userInfo.value(forKey: UIResponder.keyboardFrameEndUserInfoKey) as! NSValue
let keyboardRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keyboardRectangle.height
print(keyboardHeight)
}
Чего-то не хватает?получить данные уведомления?