Есть ли способ проверить, использует ли пользователь в настоящее время пользовательскую клавиатуру? Я знаю, как проверить все клавиатуры, но я хочу знать, какая именно клавиатура выбрана.
Вот как вы можете проверить, какие клавиатуры доступны, но как узнать, какая из них в данный момент используется пользователем?
class func isKeyboardExtensionEnabled() -> Bool {
guard let keyboards = UserDefaults.standard.dictionaryRepresentation()["AppleKeyboards"] as? [String] else {
return false
}
print("the keyboards are \(keyboards)")
for keyboard in keyboards {
if keyboard.contains("KeyboardExtension"){
return true
}
}
return false
}
Почему у меня есть представление, которое должно быть той же высоты, что и клавиатура. Я могу легко получить высоту системы, просто сделав текстовое поле респондентом и отклонив его до того, как оно будет замечено.
let keyboardFrame: NSValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue
Но для уведомления UIKeyboardWillShow высота неверна, в результате чего высота, необходимая для просмотра с фиксированной высотой, неверна. Это правильно после вызова 2 или 3, но для пользовательских клавиатур я хотел бы знать, чтобы ожидать ошибочных значений.
Но если обратиться к примеру, если вы хотите увидеть неправильные значения, здесь есть контроллер.
import UIKit
import Foundation
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillAppear(notification:)), name: UIWindow.keyboardWillShowNotification, object: nil)
showKeyboard()
}
func showKeyboard(){
let tf = UITextField(frame: .zero)
self.view.addSubview(tf)
tf.becomeFirstResponder()
}
//MARK: Keyboard
@objc func keyboardWillAppear(notification: NSNotification){
//find the extrasafe bottom
if let userInfo = notification.userInfo as? [String: Any],
let keyboardFrame: NSValue = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue{
let keyboardRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keyboardRectangle.height
print("keyboard height is \(keyboardHeight)")
}
}
deinit {
NotificationCenter.default.removeObserver(self, name: UIWindow.keyboardWillShowNotification, object: nil)
}
}
Выходные данные для печати Высота клавиатуры составляет 335,0 на iPhone X. Если вы установите Gboard и сделаете его клавиатурой по умолчанию и запустите приложение, вы получите распечатку.
высота клавиатуры составляет 75,0
высота клавиатуры 216,0
высота клавиатуры составляет 333,0 . Я просто хотел бы знать, чтобы ожидать эти ненужные ценности.