使用SetContentOffset或scrollRectToVisible后,UIScrollView会冻结

时间:2011-03-27 05:13:53

标签: iphone cocoa-touch uikit uiscrollview

我有一个启用了分页的UIScrollView,我希望能够跳到更远的页面,而不是翻过每一页。我试图同时使用setContentOffset和scrollRectToVisible。它们都将视图滚动到正确的点但是在滚动动画之后,滚动视图变得冻结并且对任何触摸都没有响应。我尝试将它设置为第一响应者,但它没有改变任何东西。我在滚动视图外面有一个按钮,它在setContentOffset之后仍然可以正常工作。滚动视图中还有按钮,不仅滚动视图不会响应拖动触摸,而且按钮也无法识别触摸。

        [mainScroll setContentOffset:CGPointMake(mainScroll.frame.size.width*4, 0.0) animated:YES];

tldr;我可以通过所有页面滚动浏览视图,但是当我尝试调用setContentOffset或scrollRectToVisible时,我会在移动后“冻结”。

1 个答案:

答案 0 :(得分:1)

我想通了,愚蠢的错误。

在我的scrollViewDidScroll中,我有:

scrollView.userInteractionEnabled=NO;

和我的scrollViewDidEndDecelerating

scrollView.userInteractionEnabled=YES;

并在scrollViewDidEndDragging中:willDecelerate

if(!decelerate){scrollView.userInteractionEnabled=YES;}

我这样做是为了防止在页面转换期间按下按钮和任何随机的事情。但是当调用setContentOffset时,它只会调用scrollViewDidScroll而不会调用其他两个,因此UserInteraction从未设置回Enabled,但仅限于使用setContentOffset时。

简单修复。