检测 UIKit for Mac (Catalyst) 中的单个修饰符键更改

Posted

技术标签:

【中文标题】检测 UIKit for Mac (Catalyst) 中的单个修饰符键更改【英文标题】:Detect Single Modifier Key Change in UIKit for Mac (Catalyst) 【发布时间】:2020-01-27 03:14:50 【问题描述】:

我在 MacOS 上使用 UIKit for Mac 移植 ios 应用程序,也称为 iPad 应用程序 for MacProject Catalyst

应用使用keyCommands from UIKit 检测单个修饰键按下:

UIKeyCommand(input: "", modifierFlags: .shift, action: #selector(singleShift))

这段代码在带有外部键盘的 iPad 上完美运行,每次按下 ⇧ 都会触发该事件。但是,这在 MacOS 上不起作用,尽管单个非修饰符事件和修饰符 + 非修饰符组合有效。

如何实现所需的行为并获得有关单个修饰键事件的通知?

或者也许我应该放弃UIKeyCommand,改用UIGestureRecognizer

【问题讨论】:

【参考方案1】:

这可能不是您的问题,请确保您没有任何键盘应用程序或拦截键盘输入的应用程序正在运行。当我安装了 Karibeaner-elements 时,我遇到了这样的问题。

否则,如果这是催化剂的限制,请考虑从应用程序包中包装 more stable API 或使用 UIGestureRecognizer

【讨论】:

UIGestureRecognizer 没有(据我所知)提供检测修饰键的方法。我错过了什么吗?我现在的解决方法是按照您的建议加载 AppKit 包。不过,如果能在 UIKit 中做到这一点,那就太好了。 我认为你是对的,我的建议是基于 OP 说他们可以使用 UIGestureRecognizer 作为解决方法,我不知道它能够识别 mod 键 @ConfusedVorlon UIGestureRecognizer 确实提供了 .modifierFlags 属性。 @MinshengLiu - 好地方。在 13.4 中添加 - 也许 Apple 会听 ;) @ConfusedVorlon 没有意识到它是如此新。那我真的很幸运!

以上是关于检测 UIKit for Mac (Catalyst) 中的单个修饰符键更改的主要内容,如果未能解决你的问题,请参考以下文章

MediaInfo for Mac(媒体信息检测工具) 中文版支持m1芯片

(Cleaner for Xcode )xcode清理工具 for Mac 3.1.1

(Cleaner for Xcode )xcode清理工具 for Mac 3.1.1

MacOS-从 UIKit 到 AppKit

为啥我无法检测到我使用 UIKit Dynamics 推离屏幕的 UIView 何时不再可见?

UIKit: Apps for Every Size and Shape