取消当前的UIScrollView触摸

Maj*_*ter 8 objective-c uiscrollview uiscrollviewdelegate ios

我有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
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图将userInteractionEnabled属性设置为NO但只有在触摸结束后它才会生效.我尝试过其他一些属性,但似乎都没有.

我怎样才能解决这个问题?

Wai*_*ain 35

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

ObjC

self.scrollView.panGestureRecognizer.enabled = NO;
self.scrollView.panGestureRecognizer.enabled = YES;
Run Code Online (Sandbox Code Playgroud)

迅速

self.scrollView.panGestureRecognizer.isEnabled = false
self.scrollView.panGestureRecognizer.isEnabled = true
Run Code Online (Sandbox Code Playgroud)

  • 这很棒。我有一个带有“UITableView”和“UIRefreshControl”的场景,当拉下来时,做了一个 API 调用。如果 API 调用出错,则会出现警告对话框。问题是您的触摸仍在“UITableView”上,因此您可以进行交互并调用另一个我们不想要的 API 调用。现在,随着`UITableViews` 触摸事件取消,由于警报,用户无法与底层表格视图交互。 (2认同)