8

私はUIScrollViewいくつかのサブビューなどを持っています。私はscrollViewでもありdelegate- (void)scrollViewDidScroll:(UIScrollView *)scrollView. 私のスクロールの下に別のビューがあります。

scrollViewcontentOffsetが x 軸で 50px 未満になった場合にそのビューを表示し、scrollView を「リセット」contentOffsetして現在の scrollView ジェスチャをキャンセルし、新しいビューが表示されたときにユーザーがコンテンツを操作しないようにします。

私は次のようにメソッドを実装しました:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.x < -50)
    {
        scrollView.contentOffset = CGPointZero;
        [self showBackView];
        //here I want to cancel the current touch on the scrollview since it keeps scrolling if I drag my finger
    }
}

userInteractionEnabledプロパティをに設定しようとしましNOたが、タッチが終了した後にのみ有効になります。そして、私は他の多くのプロパティを試しましたが、どれもうまくいかないようです。

どうすればこれを修正できますか?

4

1 に答える 1

35

panGestureRecognizerスクロール ビューの を無効にしてみてください(その後、再度有効にします)。これにより、レコグナイザーの現在のセッションがキャンセルされます。

オブジェクトC

self.scrollView.panGestureRecognizer.enabled = NO;
self.scrollView.panGestureRecognizer.enabled = YES;

迅速

self.scrollView.panGestureRecognizer.isEnabled = false
self.scrollView.panGestureRecognizer.isEnabled = true
于 2013-08-28T20:09:19.870 に答える