【发布时间】: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 上没有捷径。
【问题讨论】: