Я хочу получить высоту клавиатуры устройства для создания некоторых объектов на одной высоте. Эти объекты будут присутствовать до появления на самом деле клавиатуры, поэтому я не могу использовать такой метод, как this. Мне было интересно, есть ли способ получить высоту клавиатуры, если она не появится на самом деле?Получение высоты клавиатуры до ее появления
0
A
ответ
0
У Iv также была аналогичная проблема. Я не нашел способ получить высоту клавиатуры, не открыв клавиатуру, но у меня есть способ обойти ее.
var keyboardHeight = CGFloat()
var keyboardFirstTime = true
ввиду сделал нагрузки
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
отдельная функция, которая дает высоту клавиатуры
func keyboardWillShow(_ notification:Notification)
{
let userInfo:NSDictionary = (notification as NSNotification).userInfo! as NSDictionary
let keyboardFrame:NSValue = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! NSValue
let keyboardRectangle = keyboardFrame.cgRectValue
keyboardHeight = keyboardRectangle.height
}
в textFieldDidBeginEditing
func textFieldDidBeginEditing(_ textField: UITextField)
{
//adds .01 delay to wait and assign keyboard height for the first time
if keyboardFirstTime == true
{
let when = DispatchTime.now() + 0.01
DispatchQueue.main.asyncAfter(deadline: when)
{
UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseOut], animations:
{
self.searchField.frame.origin.y = self.view.frame.height - self.keyboardHeight - self.searchField.frame.size.height
}, completion: nil)
}
keyboardFirstTime = false
}
else
{
UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseOut], animations:
{
self.searchField.frame.origin.y = self.view.frame.height - self.keyboardHeight - self.searchField.frame.size.height
}, completion: nil)
}
textField.text = ""
}
+0
keyboardFirstTime boolean добавляет очень небольшую задержку. Это дает коду достаточно времени для вычисления высоты клавиатуры и установки ее в var. –
Вы должны использовать связанный подход, потому что вы можете» Знаете, что такое keyboa будет отображаться до тех пор, пока он не будет показан. Пользователь может установить пользовательские клавиатуры или переключить клавиатуру. Некоторые клавиатуры будут иметь разную высоту, а некоторые могут иметь панели инструментов. – rmaddy