2016-12-19 5 views
1

こんにちはみんなスクロールビューで2ページの間をスワイプしようとしていますが、うまくいきますが、ビデオが再生されている間にスワイプしようとすると、私ViewControllersAVPlayerの実行中にUIScrollViewをスワイプすることはできません

MainVeiwControllerため

override func viewDidLoad() { 
     super.viewDidLoad() 
     scrollView.isPagingEnabled=true 
     let settings = SettingsViewController(nibName: "SettingsViewController", bundle: nil) 
     self.addChildViewController(settings) 
     self.scrollView.addSubview(settings.view) 
     settings.didMove(toParentViewController: self) 

     let diamond = DiamondViewController(nibName: "DiamondViewController", bundle: nil) 
     var frame1 = diamond.view.frame 
     frame1.origin.x = self.view.frame.size.width 
     diamond.view.frame=frame1 
     self.addChildViewController(diamond) 
     self.scrollView.addSubview(diamond.view) 
     diamond.didMove(toParentViewController: self) 
     self.scrollView.contentSize = CGSize(width: self.view.frame.size.width * 2, height: self.view.frame.size.height-70) 
     scrollView.contentOffset = CGPoint(x: scrollView.frame.size.width, y: 0) 
} 

第二のViewController

var playerViewController = AVPlayerViewController() 
var playerView = AVPlayer() 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 
override func viewDidAppear(_ animated: Bool) { 

    let fileURL = NSURL(fileURLWithPath: "PATHTOVIDEO") 
    playerView=AVPlayer(url: fileURL as URL) 

    playerViewController.showsPlaybackControls=false; 

    NotificationCenter.default.addObserver(forName: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerView.currentItem, queue: nil) 
    { notification in 
     let t1 = CMTimeMake(1, 100); 
     self.playerView.seek(to: t1) 
     self.playerView.play() 

    } 


    playerViewController.player = playerView 

    self.present(playerViewController,animated:true){ 
     self.playerViewController.player?.play() 
    } 
} 

私もビデオかかわらず、ページ間をスワイプすることができますどのように今、私が知りたいですI回避策などがあります

+0

私はこの問題は、あなたが2番目のビューコントローラに追加し 'swipeRight'ジェスチャー認識だと思います。私の意見では、それはタッチをキャプチャし、スクロールビューがそれを処理することはありません。 –

+0

その部分は試してみるだけでした。それ以外の場合は、ビデオ再生中にどちらの方法でも動作しません。 –

+1

Ok。 問題はあなたが 'playerViewController'を提示していて、ビデオを再生しているときに新しい' UIWindow'に入っていて、もはや古いウィンドウに触れていないことです。 –

答えて

2

AVPlayerViewControllerを提示するのではなく、SecondViewControllerに埋め込むようにしてください。

コード例:

let url = // whatever 
let player = AVPlayer(URL:url) 
let av = AVPlayerViewController() 
av.player = player 
av.view.frame = // whatever 
self.addChildViewController(av) 
self.view.addSubview(av.view) 
av.didMoveToParentViewController(self) 

コードから: AVPlayer with playback controls of avplayerviewcontroller

+0

私はあなたのコードをスクロールビューにサブビューとして追加し、それは魅力的に機能しました –

関連する問題