Добавить AVRoutePickerView в UIMenu в Swift

Я пытаюсь сделать все, чтобы попытаться запустить AVRoutePickerView, чтобы показать, когда пользователь нажимает элемент в новом iOS 14 UIMenu.

Вот мой код:

          let airplayAudio = UIAction(
        title: NSLocalizedString("airplay_audio", comment: "Airplay Output"),
        image: UIImage(systemName: "airplayaudio")
    ) { (_) in
        let routerPickerView = AVRoutePickerView()
        routerPickerView.prioritizesVideoDevices = false
        self.view.addSubview(routerPickerView)
        // TODO: Show the view somehow? Fake a Tap? Is there any way to do this?
        //       Perhaps subclass UIMenuElement?
    }
    
    let menuActions = [airplayAudio]
    
    let newMenu = UIMenu(
        title: "",
        children: menuActions)
    
    return newMenu

Я бы предпочел не имитировать нажатие на изображение. Я изучал это, и это не поощряется Apple, и это вроде взлома.

Мне кажется, что Apple придется создать подкласс UIMenuElement, который будет делать то же самое, что и AVRoutePickerView. Я не могу придумать другого пути решения проблемы.

Я не думаю, что мог бы создать его подкласс, поскольку мне пришлось бы заставить весь AVRoutePickerView растянуть весь размер UIMenuElement и быть скрытым, а затем каким-то образом передать нажатие из супервизора на AVRoutePickerView, что все звучит как кошмар.

Разве что - кто-нибудь еще может придумать простой способ сделать так, чтобы это отображалось при выборе UIAction?

Спасибо за любую помощь, ребята.

0 ответов

Другие вопросы по тегам