私は2つのUIPageViewControllerを1つずつ他の内部に持っています。両方とも水平スクロールです。すべてのユーザー情報を含む1つのフルスクリーン、このユーザーの別のフォトギャラリー行動:私はすべてのユーザーの写真をスワイプすると、フルスクリーンをスワイプします。しかし、時々、私は写真をスワイプできません、このジェスチャーがブロックされているように見え、それは最初のページャーだけをスワイプします。しかし、私はスワイプのジェスチャーをやり直すとブロックが解除されます。私が話していることのビデオはここにあります:https://youtu.be/Hr7tDKNv15A私はそれを引き起こしているエラーを見つけるのを助けて、今私はそれをどのようにデバッグする必要があるか想像できません。内側のポケットベルを格納コンテナビューの2 UIPageViewControllerジェスチャの競合
オーバーライドhitTest:
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
if pointInside(point, withEvent: event) {
print("Inside")
print("Self view:\(self)")
print("Self subviewsview:\(self.subviews)")
print("Self subviewsview of subview:\(self.subviews[0].subviews)")
return self.subviews[0].subviews[0]
} else {
print("Outside")
return nil
}
}
私が写真をタッチすると、私の出力です:
Inside
Self view:<armeniaApp.debugGesture: 0x7f7f8be46e60; frame = (0 0; 400 400); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7f7f8be1e7c0>>
Self subviewsview:[<_UIPageViewControllerContentView: 0x7f7f8be920a0; frame = (0 0; 400 400); clipsToBounds = YES; opaque = NO; autoresize = W+H; layer = <CALayer: 0x7f7f89ff1e00>>]
Self subviewsview of subview:[<_UIQueuingScrollView: 0x7f7f8a836e00; frame = (0 0; 400 400); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7f7f8be81db0>; layer = <CALayer: 0x7f7f8be522b0>; contentOffset: {400, 0}; contentSize: {1200, 400}>]
だから私はUIQueuingScrollView
に店舗を必要とするジェスチャーしかし、私次はする必要がありますか? return self.subviews[0].subviews[0]
は、私がrequireGestureRecognizerToFail
見てみることをお勧めしたい
ジェスチャーにアクセスできないので、デリゲートメソッドは呼び出されません:CどこでもgestureRecognizer配列は空です(任意のアイデア? –
)これはドキュメント内で見つけただけです: "トランジションスタイル'UIPageViewControllerTransitionStylePageCurl'" –
あなたは 'hitTest:'をオーバーライドして、内側のページビューコントローラ内のタッチがさらにスクロールするときにそれに転送されることを確認できますが、他はすべて外部ページビューコントローラに転送されますか? –