【发布时间】:2021-02-16 06:42:29
【问题描述】:
我正在开发一个 iOS 13+ 项目,其中包含一个可用作计算器的视图。用于输入数字和运算符 (+ - * / ...) 的数字块是使用简单的UIButtons 构建的。当前值显示在UILabel 中。
现在我想扩展现有代码以接受来自连接的硬件键盘的输入。我已经扩展了UILabel 来处理UIResponder 方法pressesBegan:withEvent:
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
guard let key = presses.first?.key else { return }
switch key.keyCode {
case .keyboard1:
case .keypad1:
insertNumber(1)
case .keyboard2:
case .keypad2:
insertNumber(2)
...
case .keypadPlus:
add()
...
default:
super.pressesBegan(presses, with: event)
}
}
这在使用带有数字块的键盘时可以正常工作。但是,我也想支持没有数字块的键盘。在这种情况下,例如 * 符号只能使用两个键 Shift + 输入(在具有德语布局的键盘上)。
但是,当键入 Shift + 时,presses:with: 方法会被调用两次。一次用于Shift 键,一次用于+ 键。我不确定为什么单独处理每个击键时按下是Set。
那么,如何检测多键组合?
【问题讨论】: