0

我正在尝试一切尝试触发 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 时显示出来?

感谢大家的帮助。

4

0 回答 0