ios - 如何在iOS中使用硬件键盘?

标签 ios swift uitextfield

我正在制作一个具有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/

相关文章:

ios - 在哪里可以找到 iOS Obj-C 代码以扫描并连接到 wifi(私有(private) API)

ios - UITextField 文本在编辑前不可见

ios - 两种设置按钮初始状态的方法的区别

ios - 是否 openParentApplication :reply require App Groups capability to be enabled?

ios - 将 UITextField 的一部分设置为不可编辑

ios - 尽管存在 leftView,如何将文本居中放置在 UITextField 中?

ios - 如何在 GitHub 中保存或安全避免 Facebook 或 LinkedIn 等社交网络的 key

ios - iOS 9 中的自定义 UIViewController 转换错误

ios - 当应用程序处于后台时在 iOS appDelegate didReceiveRemoteNotification 中调用 lambda 函数

ios - Fabric : Digits not working iOS 10