У меня есть приложение 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.