iOS - 在AVPlayerViewController顶部添加控件

问题描述:

我有一个AVPlayerViewController的子类,我想在其上添加自定义控件。我成功地将自定义控件添加到AVPlayerViewController的顶部。但是,这些控件只能在短时间内响应。几秒钟后,单击任何按钮都不会触发touchUpInside事件。iOS - 在AVPlayerViewController顶部添加控件

下面是我使用的代码:

class LSPlayerViewController : AVPlayerViewController { 

private var btnPlay : UIButton! 

func addControls() { 
    self.showsPlaybackControls = false 

    //PLAY BUTTON 
    let btnPlayRect = CGRect(x: 0, y: 0, width: 19, height: 25) 
    btnPlay = UIButton(frame: btnPlayRect) 
    btnPlay.center = self.view.center 
    btnPlay.setImage(#imageLiteral(resourceName: "PauseIcon"), for: .normal) 
    btnPlay.addTarget(self, action: #selector(self.playButtonTapped(sender:)), for: .touchUpInside) 
    btnPlay.alpha = 0 
    btnPlay.isUserInteractionEnabled = true 
    self.view.addSubview(btnPlay) 
} 

func playButtonTapped(sender: UIButton!) { 
    if sender.isPlayIconOn == true { 
     sender.setImage(#imageLiteral(resourceName: "PauseIcon"), for: .normal) 
     self.player?.play() 
    } else { 
     sender.setImage(#imageLiteral(resourceName: "PlayIcon"), for: .normal) 
     self.player?.pause() 
    } 
} 

}

+0

确实[这] (https://*.com/a/27253734/1971013),我发现在十秒内,帮助? –

+0

我之前也检查过,但是这并不能解决我的问题。我正在成功添加控件,但touchUpInside事件在短时间后不会触发。 – krypton36

我加入以下两行旁边的addSubview功能解决了这个问题:

self.addChildViewController(playerViewController) 
playerView.addSubview(playerViewController.view) 
playerViewController.didMove(toParentViewController: self)