取消当前的UIScrollView触摸

时间:2013-08-28 20:02:59

标签: ios objective-c uiscrollview uiscrollviewdelegate

我有一个UIScrollView,其中包含一些子视图,依此类推。我也是scrollView的delegate并实现了- (void)scrollViewDidScroll:(UIScrollView *)scrollView。在我的卷轴下面还有另一个视图。

我想显示该视图,如果scrollView的contentOffset在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,但只有在触摸结束后才会生效。我尝试过其他一些属性,但似乎都没有。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:35)

尝试禁用滚动视图的panGestureRecognizer(然后重新启用它)。这将取消识别器的当前会话:

ObjC

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

夫特

self.scrollView.panGestureRecognizer.isEnabled = false
self.scrollView.panGestureRecognizer.isEnabled = true