如何使用swift触发AVRoutePickerView上的点击事件

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

使用 AVRoutePickerView,我可以在点击 Airplay 图标时以编程方式执行 Airplay。 现在我想要,在 viewDidLoad 上它应该初始化 AVRoutePickerView 甚至点击播放图标(无需手动点击图标)。

这是我在 UIView 上显示 Airplay 图标的一小段代码

让routePV = AVRoutePickerView(frame: CGRect(x: 30.0, y: 150.0, 宽度:30.0,高度:30.0)) 路线PV = UIColor.clear
self.view.addSubview(routePV)

我真的不确定如何触发 viewdidload 上的点击?

谢谢

ios swift airplay
3个回答
12
投票

这是可能的。但我必须警告,在没有用户交互的情况下呈现此界面可能会出现非常意外的行为。我建议仅将其作为用户打算呈现此界面的直接结果。

确保您已将其添加到视图层次结构中。

let routePickerView = AVRoutePickerView()
view.addSubview(routePickerView)

如果需要,您可以隐藏它。

routePickerView.isHidden = true

然后要呈现路线选择器界面,请在其

touchUpInside
上触发
UIButton

if let routePickerButton = routePickerView.subviews.first(where: { $0 is UIButton }) as? UIButton {
    routePickerButton.sendActions(for: .touchUpInside)
}

请注意,这可能会在未来的 iOS 版本中停止工作。


6
投票

我更喜欢使用扩展:

fileprivate extension AVRoutePickerView {
    func present() {
        let routePickerButton = subviews.first(where: { $0 is UIButton }) as? UIButton
        routePickerButton?.sendActions(for: .touchUpInside)
    }
}

实现示例:

class RandomViewController: UIViewController {

    ...

    private lazy var routePickerView = { 
        let routePickerView = AVRoutePickerView(frame: .zero)
        routePickerView.isHidden = true
        view.addSubview(routePickerView)
        return routePickerView
    }

    ...

    @IBAction func presentPickerView(_ sender: UIButton) {
        routePickerView.present()
    }
}

0
投票

上面的片段对我有用。 但是

routePickerView.present()
给出了错误。 如果出现错误,请将其替换为
routePickerView().present()

谢谢。

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