我正在制作一个具有UITextField
的简单iOS项目,并使用XCode Simulators对其进行测试。另外,我还向自己的textField添加了一个inputAccessoryView
(带有“Done”按钮的简单UIToolBar
)。
当我在“模拟器的硬件偏好设置”中打开Connect Hardware Keyboard
选项并单击到textField时,键盘没有出现,但是工具栏出现了(看起来很奇怪-没有键盘的工具栏)。在这种情况下,仅当我单击Toggle Software Keyboard
(默认值:⌘+ K)时才会出现键盘。当我关闭Connect Hardware Keyboard
选项时,该程序可以正常工作,键盘随其工具栏出现和消失。我只想在两种情况下都具有正确的行为(例如,不显示带有硬件键盘的工具栏)。
什么是检测当前使用哪个键盘(软件或硬件)的最简单方法?
这是代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let toolBar = UIToolbar(frame: CGRect(origin: .zero, size: .init(width: view.frame.size.width, height: 30)))
let doneButton = UIBarButtonItem(title: "Done", style: .done
, target: self, action: #selector(doneButtonAction))
toolBar.setItems([doneButton], animated: false)
toolBar.sizeToFit()
textField.inputAccessoryView = toolBar
}
@objc func doneButtonAction() {
self.view.endEditing(true)
}
}
最佳答案
如果我理解正确,这是正确的行为。
当您单击UITextField时,您希望看到UIToolBar,因为“完成”按钮上可能具有更复杂的功能。当然,您的硬件键盘上没有该工具栏。
这就是为什么在连接硬件键盘后仅打开工具栏的原因。
关于ios - 如何在iOS中使用硬件键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59632640/