首页 > 解决方案 > 如何在 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)
    }
}

标签: iosswiftuitextfield

解决方案


如果我理解正确,这是正确的行为。您希望在点击 UITextField 时看到 UIToolBar,因为您可能在“完成”按钮上有更复杂的功能。当然,您不能在硬件键盘上使用该工具栏。这就是为什么当您连接了硬件键盘时仅打开工具栏的原因。


推荐阅读