Macos Mac Catalyst无法捕获。按开始覆盖的命令键修改器
我正在为iOS(以及通过Mac Catalyst的MacOS)开发一个远程桌面控制应用程序,当应用程序位于前台时,该应用程序必须能够捕获设备上的所有键盘输入,包括Cmd键(相当于非Mac键盘上的Super/Start键),以便将其发送到远程桌面 我还没有尝试查看带有外部键盘的iOS设备是否可以看到.command key修改器,但当我启用Mac Catalyst支持并在Mac上安装应用程序并向AppDelegate添加以下方法时:Macos Mac Catalyst无法捕获。按开始覆盖的命令键修改器,macos,command,key,catalyst,modifier,Macos,Command,Key,Catalyst,Modifier,我正在为iOS(以及通过Mac Catalyst的MacOS)开发一个远程桌面控制应用程序,当应用程序位于前台时,该应用程序必须能够捕获设备上的所有键盘输入,包括Cmd键(相当于非Mac键盘上的Super/Start键),以便将其发送到远程桌面 我还没有尝试查看带有外部键盘的iOS设备是否可以看到.command key修改器,但当我启用Mac Catalyst支持并在Mac上安装应用程序并向AppDelegate添加以下方法时: override func pressesBegan(_
override func pressesBegan(_ presses: Set<UIPress>,
with event: UIPressesEvent?) {
super.pressesBegan(presses, with: event)
print(presses.first?.key, presses.first?.key?.modifierFlags)
}
override func pressesEnded(_ presses: Set<UIPress>,
with event: UIPressesEvent?) {
super.pressesEnded(presses, with: event)
print(presses.first?.key, presses.first?.key?.modifierFlags)
}
override func pressesCancelled(_ presses: Set<UIPress>,
with event: UIPressesEvent?) {
super.pressesCancelled(presses, with: event)
print(presses.first?.key, presses.first?.key?.modifierFlags)
}
我也尝试过将应用程序置于全屏模式,但没有效果
关于如何捕获.command修饰符还有其他建议吗
接下来,我将尝试通过AppKit包捕获输入,但这并不理想
多谢各位 希望您已经有了答案,但万一没有: 您需要使用如下代码检查压力机
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
var didHandleEvent : Bool = true
print("presses began \(presses.count)")
for press in presses {
guard let key = press.key else { continue }
if key.modifierFlags.contains(.command) {
commandDown = true
print("commandDown")
}
...
override func PressesBegined(uPress:Set,事件:UIPresseEvent?){
var didHandleEvent:Bool=true
打印(“印刷开始\(印刷次数.计数)”)
用于印刷机中的印刷{
guard let key=press.key else{continue}
如果key.modifierFlags.contains(.command){
commandDown=true
打印(“命令关闭”)
}
...
如果您希望系统在处理代码的同时还处理按键,那么您也应该只调用super.pressesStart。在您的情况下,我怀疑您不希望系统执行此操作,因此请跟踪您已处理的按键,只有在未处理的情况下,您才会调用super。
您可能还希望将视图控制器设置为。becomeFirstResponder()
(假设您使用的是UIVIewController)希望您已经有了答案,但万一没有: 您需要使用如下代码检查压力机
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
var didHandleEvent : Bool = true
print("presses began \(presses.count)")
for press in presses {
guard let key = press.key else { continue }
if key.modifierFlags.contains(.command) {
commandDown = true
print("commandDown")
}
...
override func PressesBegined(uPress:Set,事件:UIPresseEvent?){
var didHandleEvent:Bool=true
打印(“印刷开始\(印刷次数.计数)”)
用于印刷机中的印刷{
guard let key=press.key else{continue}
如果key.modifierFlags.contains(.command){
commandDown=true
打印(“命令关闭”)
}
...
如果您希望系统在处理代码的同时还处理按键,那么您也应该只调用super.pressesStart。在您的情况下,我怀疑您不希望系统执行此操作,因此请跟踪您已处理的按键,只有在未处理的情况下,您才会调用super。
您可能还希望将视图控制器设置为。becomeFirstResponder()
(假设您使用的是UIVIewController)