2016-10-14 16 views
0

UIPageViewControllerによって制御されるビューコントローラが左/右のスワイプを傍受することを許可するにはどうすればよいですか?UIPageViewController:そのページの1つでスワイプを傍受する

目的は、ユーザーがUIPageViewController内のページで左右にスワイプしたときにビデオを停止することです。ただし、スワイプジェスチャはページのビューコントローラによって認識されません。それらはUIPageViewControllerによって認識されるように見えます。

ページのビューコントローラでは、このコードを使用してスワイプハンドラを登録し、同時にジェスチャ認識プログラムを動作させることができます。

// Handle swipes 
let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe)) 
let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe)) 
leftSwipe.direction = .left 
rightSwipe.direction = .right 
leftSwipe.delegate = self 
rightSwipe.delegate = self 
view.addGestureRecognizer(leftSwipe) 
view.addGestureRecognizer(rightSwipe) 


func didViewSwipe(_ sender:UISwipeGestureRecognizer) { 
    stopVideo() 
}  


func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 

答えて

0

ビューに左と右のジェスチャー認識を追加します。

let right = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe(_:))) 
right.direction = .right 
self.view.addGestureRecognizer(right) 

let left = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe(_:))) 
left.direction = .left 
self.view.addGestureRecognizer(left) 

は、関数でスワイプをキャプチャし、スワイプが持っていた方向を参照してください。

func didViewSwipe(_ gesture: UIGestureRecognizer) { 
    if let swipeGesture = gesture as? UISwipeGestureRecognizer { 
     switch swipeGesture.direction { 
     case UISwipeGestureRecognizerDirection.right: 
      print("Swiped right") 
     case UISwipeGestureRecognizerDirection.left: 
      print("Swiped left") 
     default: 
      break 
     } 
    } 
} 
+0

はい申し訳ありませんが、これはすでにありますそこに、しかしスワイプは捕まえられない。 – Crashalot

+0

スワイプジェスチャーを追加する必要がある 'UIPageViewController'の宣言を表示します。 –

+0

UIPageViewControllerに追加するのではなく、コントロールするView Controllerの1つです。言い換えれば、1つのビューコントローラ(5つのうち)のスワイプをインターセプトしたいだけです。 – Crashalot

関連する問題