是否可以检查用户当前是否正在使用自定义键盘?我知道如何检查所有键盘,但是我想知道所选择的确切键盘。
这是您如何检查可用的键盘,但是我如何知道用户当前使用的是哪个键盘?
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)
}
}
在iPhone X上,打印输出为键盘高度为335.0 。如果您安装了Gboard并将其设置为默认键盘并运行该应用程序,则会得到打印输出 键盘高度为75.0 键盘高度为216.0 键盘高度为333.0 。我只是想知道期望这些垃圾值。