【问题标题】:Detecting physical keyboard keypress in a catalyst program在催化剂程序中检测物理键盘按键
【发布时间】:2020-05-15 14:12:57
【问题描述】:

我有一个小的 iOS 应用程序,我想用 Catalyst 为 macOS 编译它。 该应用程序在 Mac 上可以正常运行,但它是一个计算器应用程序,因此我希望除了单击按钮之外还能够使用键盘输入数字。

我搜索并发现 pressesBegan 的覆盖是这样做的好方法。但是如果我在https://developer.apple.com/documentation/uikit/mac_catalyst/handling_key_presses_made_on_a_physical_keyboard?changes=_8 实现苹果的例子 像这样

    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 课程中,我的指令 key = press.key 出现错误:

“UIPress”类型的值没有成员“键”

阅读 UIPress 类的文档,我在 XCode 文档(UIKit>Touches、Presses 和 Gesture>UIPress)中看不到任何关键成员,但我在 https://developer.apple.com/documentation/uikit/uipress ??

我在 Internet 上没有找到任何关于“'UIPress' 类型的值没有成员'key'”消息的报告

【问题讨论】:

    标签: ios swift keyboard mac-catalyst


    【解决方案1】:

    我发现了我的问题。

    我有一个旧版本的 XCode (11.3.1),它不知道 UIPress.key。

    升级到 XCode 11.4.1 后,一切正常。

    我不太明白原因,因为我可以在属性密钥可用之前为 iOS 12.4 编译代码(Apple 的文档声称 iOS 13.4+)。但是现在可以了!

    【讨论】:

    • 嘿@FredericP,我很好奇你是怎么被逼着开始工作的。我试图将函数从字面上移动到任何地方(AppDelegate、SceneDelegate、SplitVC、MasterVC、DetailVC),但它没有拦截任何东西。
    • 我刚刚在 viewController 中添加了这个 override func pressesBegan(_ presses: Set&lt;UIPress&gt;, with event: UIPressesEvent?)(在带有 Catalyst 的 iOS 应用程序中)
    • 随意将您自己的答案标记为已接受。没关系 (stackoverflow.com/help/self-answer)。
    • 我遇到了同样的问题。我不明白为什么这不能用 XCode 11.3.1 编译(这是我所拥有的,因为我还没有更新到 Catalina)。苹果文档页面说它在 iOS 9.0+ developer.apple.com/documentation/uikit/uipress 中受支持。我的应用支持 iOS 11.4 及更高版本。有没有什么方法可以让它工作而无需更新我的整个操作系统?
    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2020-11-04
    • 2013-04-18
    • 2011-05-13
    • 2017-01-22
    • 2010-09-22
    相关资源
    最近更新 更多