2017-01-16 30 views
3

UIPageViewControllerのページング機構と併用してUITableViewの作業で削除するようにスワイプしています。 sのジェスチャー認識:私は「UIPageViewControllerジェスチャー認識機能にアクセスしてスワイプを有効にします

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { 
    if let _ = touch.view as? UITableViewCell { 
     return false 
    } 

    return true 
} 

私の問題は、私はUIPageViewControllerを見つけることができないということです、私はそれのデリゲートを変更して実施することができるようにsのジェスチャー認識」UIPageViewControllerを設定したいです。私はに探して試してみました:

myPageViewController.gestureRecognizers 
myPageViewController.view.gestureRecognizers 

myPageContentViewController.gestureRecognizers 
myPageContentViewController.view.gestureRecognizers 

それはどこにあるおよび/またはUIPageViewControllerに機能を削除するUITableViewのスワイプを実装するよりよい解決策はありますか?

答えて

2

ジェスチャは、そのscrollViewに添付されています。このジェスチャは、パブリック属性ではありません。とにかく私はscrollViewを取得するには、この拡張機能を使用します。

extension UIPageViewController { 

    public var scrollView: UIScrollView? { 
     for view in self.view.subviews { 
      if let scrollView = view as? UIScrollView { 
       return scrollView 
      } 
     } 
     return nil 
    } 

} 

は、その後、あなたはそのpanGestureをしたい:

pageController.scrollView?.panGestureRecognizer 
+0

私は言葉で表現としてそれは私の質問に答えるように私はこの答えを受け入れる必要がありますね、残念ながら、あなたが許可されていませんpanGestureRecognizerのデリゲートを変更します。私は致命的なエラーが発生する "UIScrollViewの組み込みのパンジェスチャ認識機能はそのスクロールビューをその代理人として持つ必要があります。私の問題はまだ解決されていません。 – jjatie

+0

スワイプとパンの衝突を避けるために、 ' - (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;'を試すことができます。 – tgyhlsb

+0

@tgyhisb興味深い考えです。私はテーブルビューのセルでスワイプジェスチャーレコグナイザーを見つけることができませんでした。そして、すべてのセルでそのメソッドを呼び出す必要がありますか? – jjatie

関連する問題