2016-10-05 2 views
6

私はをUIViewControllerにプログラムで追加しました。プレーヤーの再生が終了すると、通知を受け取ることができます(playerDidFinishPlaying)。また、ビデオの再生中にユーザーが画面に触れても関連する通知が見つからなかったかどうかを知りたいと思います。迅速に、AVPlayerViewControllerでビデオを再生しながらタッチを検出する方法

スイフト2:

カスタムベースクラス:

class CustomAVPlayerViewController: AVPlayerViewController { 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     print("touchesBegan") 
    } 
} 

のViewController:

+0

ユーザーが前/後ボタンを押したときにタッチを検出する方法はありますか? – pkc456

答えて

6

溶液をAVPlayerViewController基本クラスを作成し、touches​Began(_:​with:​)メソッドをオーバーライドすることである

let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") 
let player = AVPlayer(URL: videoURL!) 
let playerViewController = CustomAVPlayerViewController() 
playerViewController.player = player 
self.presentViewController(playerViewController, animated: true) { 
    playerViewController.player!.play() 
} 

スウィフト3:

カスタム基本クラス:

class CustomAVPlayerViewController: AVPlayerViewController { 
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     print("touchesBegan") 
    } 
} 

ビューコントローラ:

let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") 
let player = AVPlayer(url: videoURL!) 
let playerViewController = CustomAVPlayerViewController() 
playerViewController.player = player 
self.present(playerViewController, animated: true) { 
    playerViewController.player!.play() 
} 

import AVKitimport AVFoundationに忘れないでください。

playerViewControllerをタップするたびに「touchesBegan」が印刷されます。

+2

リファレンスドキュメントに関する考え方:_ AVPlayerViewControllerをサブクラス化しないでください。このクラスのメソッドをオーバーライドするとサポートされず、未定義の動作になります_。 – Bruce

+1

@Bruceのコメント([Apple Documentation](https://developer.apple.com/reference/avkit/avplayerviewcontroller))を参照してください:_touchesBegan_は[UIResponder](https://developer.apple.com/reference/uikit)です。/uiresponder)メソッド(UIResponder-> UIViewController-> AVPlayerViewController)。私たちの場合、UIResponderはタッチイベントを処理する必要があります。AVPlayerViewControllerのコア機能には関係しません。つまり、このメソッドをオーバーライドすることは、AVPlayerViewControllerがビデオの処理方法を反映しません。オーバーライドされます。ノートのために 感謝します。 –

+0

@AhmadF、ユーザーが前/後ろボタンを押したときにタッチを検出する方法は? – pkc456

関連する問題