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

Posted

技术标签:

【中文标题】如何在 iOS 中使用硬件键盘?【英文标题】:How to work with hardware keyboard in iOS? 【发布时间】:2020-01-07 16:43:48 【问题描述】:

我正在制作一个简单的 ios 项目,其中有一个 UITextField 并使用 XCode 模拟器对其进行测试。我还在我的文本字段中添加了一个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)
    

【问题讨论】:

【参考方案1】:

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

【讨论】:

如果我想向上移动视图以查看我正在输入的文本,我如何理解应该向上移动视图的哪个值?在软件键盘的情况下,它将是键盘的高度加上工具栏的高度,但在硬件的情况下,它只是工具栏的高度。那么如何检测,现在使用的是哪个键盘呢? 为此,您可以从该主题编写代码:***.com/questions/45518144/… 或者您可以使用此 POD:cocoapods.org/pods/IQKeyboardManagerSwift

以上是关于如何在 iOS 中使用硬件键盘?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin / iOS - 如何从硬件键盘禁用选项卡键码

iOS:如何检测硬件蓝牙键盘上的转义/控制键?

尽管有德语硬件键盘,iOS 8.1 Simulator 始终使用美式键盘布局

iOS 模拟器 - 以编程方式禁用连接硬件键盘

如何在 iOS 中使用 Phonegap 配置键盘?

如何在 iOS 7 中更改键盘的背景颜色