ios - 如何在 iOS 中使用硬件键盘?
问题描述
我正在制作一个简单的 iOS 项目,其中包含一个UITextField
并使用 XCode Simulators 对其进行测试。我还添加了一个inputAccessoryView
到我的文本字段(一个简单UIToolBar
的“完成”按钮)。
当我在模拟器的硬件首选项中打开Connect Hardware Keyboard
选项并单击文本字段时,没有出现键盘,但出现了工具栏(看起来很奇怪 - 没有键盘的工具栏)。在这种情况下,键盘仅在我单击时出现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,因为您可能在“完成”按钮上有更复杂的功能。当然,您不能在硬件键盘上使用该工具栏。这就是为什么当您连接了硬件键盘时仅打开工具栏的原因。
推荐阅读
- nginx - 如何在 DaemonSet 中将文件挂载为 ConfigMap?
- azure - 如何从 Azure AD 登录面板中删除“阅读您的邮件”同意?
- wavelet - 为什么双树复小波具有位移不变性?
- php - Woocommerce“简单产品类型”更改零价格产品的价格文本,无价格产品
- python - Python 返回带有 Jinja2 设置标签的“无效语法”
- python - 是否可以有无头模式和浏览器扩展?在 Selenium 和 python 中)
- c# - 为什么使用实体框架首次调用数据库需要更长的时间,即使之前已经调用过这个数据库?
- vba - 使用 VBA 使用“vbModeless”创建带有按钮的动态表单
- apache-nifi - 如何在 Nifi 中使用 GenerateTableFetch 处理器捕获增量获取中的所有记录
- node.js - 将 Excel 文件转换为 CSV 并以 JSON 格式读取其内容