【问题标题】:Detecting 'Return' key pressed from an external keyboard on iOS在 iOS 上检测从外部键盘按下的“返回”键
【发布时间】:2026-01-08 00:45:02
【问题描述】:

有没有办法检测何时从连接到 iOS 设备的外部键盘按下“Return”键,而不是点击屏幕键盘的“Return”键?

这可以通过公共 API 实现吗?

我的班级是UITextFieldDelegate,我接到电话:

- (BOOL)textFieldShouldReturn:(UITextField *)textField

但是当它被调用时,textField.text 返回文本字段中存在的字符,而不是发出的回车符。

-textField:shouldChangeCharactersInRange:replacementString 不会通过物理或虚拟键盘的“Return”键来调用。

【问题讨论】:

  • 这两种键盘的行为相同。不能在UITextField 中输入回车。点击返回键时,应调用textFieldShouldReturn: 委托方法,并且文本字段不应添加回车符。您是否发现这两种键盘的行为不同?
  • 对于这两种键盘类型,我没有在 UITextField 中看到回车符。所以这种行为是正确的。原来这是我正在使用的第 3 方库中的一个错误。

标签: ios uitextfield


【解决方案1】:

在 iOS 7+ 中,您可以使用UIKeyCommand 来区分通过硬件键盘返回。

extension ViewController {
    
    @objc private func keyCommand_return() {
        /// handle return
    }
    
    
    override var keyCommands: [UIKeyCommand]? {
        return [
            UIKeyCommand(input: "\r", modifierFlags: [], action: #selector(keyCommand_return)),
        ]
    }
}

【讨论】:

    最近更新 更多