在催化剂程序中检测物理键盘按键
Detecting physical keyboard keypress in a catalyst program
我有一个小型 iOS 应用程序,我想使用 Catalyst 为 macOS 编译。
该应用程序在 Mac 上运行正常,但它是一个计算器应用程序,因此除了单击按钮之外,我还希望能够使用键盘输入数字。
我搜索了一下,发现覆盖 pressesBegan 是一个很好的方法。但是,如果我在 https://developer.apple.com/documentation/uikit/mac_catalyst/handling_key_presses_made_on_a_physical_keyboard?changes=_8 实施 Apple 的示例
像这样
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
// Run backward or forward when the user presses a left or right arrow key.
var didHandleEvent = false
for press in presses {
guard let key = press.key else { continue }
if key.charactersIgnoringModifiers == UIKeyCommand.inputLeftArrow {
//runBackward()
didHandleEvent = true
}
if key.charactersIgnoringModifiers == UIKeyCommand.inputRightArrow {
//runForward()
didHandleEvent = true
}
}
if didHandleEvent == false {
// Didn't handle this key press, so pass the event to the next responder.
super.pressesBegan(presses, with: event)
}
}
在我的 Appdelegate class 中,指令 key = press.key
:
出现错误
Value of type 'UIPress' has no member 'key'
阅读 class UIPress 的文档,我在 XCode 文档中没有看到任何关键成员(UIKit>Touches, Presses and Gesture>UIPress),但我在
https://developer.apple.com/documentation/uikit/uipress
??
我没有在 Internet 上找到任何消息 "Value of type 'UIPress' has no member 'key'" 的报告
我解决了我的问题。
我有一个旧版本的 XCode (11.3.1),它不知道 UIPress.key。
升级到XCode11.4.1后,一切正常
我不太明白原因,因为我可以在 属性 密钥可用之前编译 iOS 12.4 的代码(Apple 的文档声称 iOS 13.4+ ).但它现在有效了!
我有一个小型 iOS 应用程序,我想使用 Catalyst 为 macOS 编译。 该应用程序在 Mac 上运行正常,但它是一个计算器应用程序,因此除了单击按钮之外,我还希望能够使用键盘输入数字。
我搜索了一下,发现覆盖 pressesBegan 是一个很好的方法。但是,如果我在 https://developer.apple.com/documentation/uikit/mac_catalyst/handling_key_presses_made_on_a_physical_keyboard?changes=_8 实施 Apple 的示例 像这样
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
// Run backward or forward when the user presses a left or right arrow key.
var didHandleEvent = false
for press in presses {
guard let key = press.key else { continue }
if key.charactersIgnoringModifiers == UIKeyCommand.inputLeftArrow {
//runBackward()
didHandleEvent = true
}
if key.charactersIgnoringModifiers == UIKeyCommand.inputRightArrow {
//runForward()
didHandleEvent = true
}
}
if didHandleEvent == false {
// Didn't handle this key press, so pass the event to the next responder.
super.pressesBegan(presses, with: event)
}
}
在我的 Appdelegate class 中,指令 key = press.key
:
Value of type 'UIPress' has no member 'key'
阅读 class UIPress 的文档,我在 XCode 文档中没有看到任何关键成员(UIKit>Touches, Presses and Gesture>UIPress),但我在 https://developer.apple.com/documentation/uikit/uipress ??
我没有在 Internet 上找到任何消息 "Value of type 'UIPress' has no member 'key'" 的报告
我解决了我的问题。
我有一个旧版本的 XCode (11.3.1),它不知道 UIPress.key。
升级到XCode11.4.1后,一切正常
我不太明白原因,因为我可以在 属性 密钥可用之前编译 iOS 12.4 的代码(Apple 的文档声称 iOS 13.4+ ).但它现在有效了!