在iPad上为支持iOS 12和13的应用程序启用键盘快捷键。

问题描述 投票:0回答:1

我有一个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个回答
0
投票

我面临着和你一模一样的问题。使用:

#if targetEnvironment(macCatalyst)

围绕着你的扩展而不是使用... @available Xcode的建议。

© www.soinside.com 2019 - 2024. All rights reserved.