【问题标题】:Enabling keyboard shortcuts on iPad for app that supports iOS 12 and 13在 iPad 上为支持 iOS 12 和 13 的应用启用键盘快捷键
【发布时间】:2020-08-17 16:17:42
【问题描述】:

我有一个 iOS 应用程序,它支持 iOS 10 到 iOS 13,并且最近添加了对它的 Catalyst 支持。通过 AppDelegate 的扩展支持键盘快捷键,我也想在 iPad 上启用它们。

extension AppDelegate {
  override func buildMenu(with builder: UIMenuBuilder) {
    super.buildMenu(with: builder)
    guard builder.system == .main else { return }

    // Add menus and shortcuts
  }
}

这在 Catalyst 目标上编译得很好,但是在为 iOS 构建时出现以下错误:'UIMenuBuilder' 仅在 iOS 13.0 或更高版本中可用

显而易见的解决方案是检查可用性:

@available(iOS 13.0, *)
extension AppDelegate {
  override func buildMenu(with builder: UIMenuBuilder) {
    super.buildMenu(with: builder)
    guard builder.system == .main else { return }

    // Add menus and shortcuts
  }
}

但随后错误更改为覆盖“buildMenu”必须与它覆盖的声明一样可用

所以现在我从 iOS 上的构建中排除了扩展以获得有效的构建,但这意味着在 iPad 上没有捷径。

【问题讨论】:

    标签: ios swift catalyst


    【解决方案1】:

    我遇到了和你一样的问题。使用:

    #if targetEnvironment(macCatalyst)
    

    围绕您的扩展而不是 Xcode 的 @available 建议。

    【讨论】:

    • 这无济于事:是的,该应用程序将为 iPadOS 编译,但键盘快捷键在那里不起作用,因为该代码被排除在外。
    • 对于 iPadOS 键盘快捷键,我使用:覆盖 var keyCommands:,而不是 buildMenu。
    • 谢谢,通过覆盖 keyCommands 我可以让它工作。
    • 更详细的描述可以在nshipster.com/uikeycommand找到
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2021-02-02
    • 1970-01-01
    相关资源
    最近更新 更多