如何使用Swift在AVRoutePickerView上触发click事件

时间:2019-05-13 15:41:08

标签: ios swift airplay

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

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

  

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

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

谢谢

2 个答案:

答案 0 :(得分:0)

这是可能的。但是,我必须警告,在没有用户交互的情况下呈现此界面可能是非常意外的行为。我只建议这样做,因为用户打算展示此界面。

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

// in counterclockwise order :

static float triangleCoords[] = {
        0.0f,  0.622008459f, 0.0f,  // top
        -0.5f, -0.311004243f, 0.0f, // bottom left
        0.5f, -0.311004243f, 0.0f   // bottom right
}; 

如果需要,可以将其隐藏。

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

然后显示路由选择器界面,在其routePickerView.isHidden = true 上触发touchUpInside

UIButton

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

答案 1 :(得分:0)

我更喜欢使用扩展名:

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()
    }
}