3

にある を使用してUIPanGestureRecognizerUIViewますUICollectionViewCell。メソッドを使用しtranslationInViewて、X 軸に沿って移動し、UIView左右にスライドします。正常に動作しますが、指がセル上にある場合、CollectionView で上下にスクロールできません。PanGestureRecognizerにパスを垂直スクロールにする方法はありUICollectionViewますか?

iOS 用の Reeder.app で見られるスライドを再現しようとしています。

4

1 に答える 1

8

タッチでUIPanGestureRecognizerアクティブ化するとUIView、レスポンダー チェーンを介して転送されなくなります。そのためUICollectionView、タッチを受信しなくなります。

あなたUIViewのデリゲートとしてあなたを設定してみて、アクティブUIPanGestureRecognizerにする必要があるかどうかのロジックを配置することができますUIPanGestureRecognizer。UIView にデリゲートのメソッドを実装する必要があります。

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;

たとえば、以下のコードでは、ビューの y 軸の速度が x 軸の速度よりも大きい場合はアクティブにしないように指示します (したがって、そのUICollectionView下にタッチを送信します) 。

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{

    UIPanGestureRecognizer *recognizer = (UIPanGestureRecognizer *)gestureRecognizer;
    CGPoint velocity =[recognizer velocityInView:self];
    if(abs(velocity.y)>=(abs(velocity.x))){
        return NO;
    }else return YES;

}

これが役に立てば幸いです。

于 2013-03-01T16:31:34.863 に答える