我刚刚更新到xCode 6和iOS 8,我注意到我的应用程序非常奇怪。在我的应用程序中,我有一个滚动视图,其中有几个按钮,水平对齐。我将其设置为创建我自己的自定义可滚动标签栏控制器。在更新到iOS 8和xCode 6之前,一切都很完美,但现在我意识到当我尝试向左或向右滚动滚动视图时,我的初始触摸位于滚动视图中的一个按钮内,则不会发生滚动。但是,如果我触摸按钮之间,则滚动按预期工作。我认为这是按钮正在注册触摸的一些问题,就好像滚动视图从未被触摸过一样。但这完全是100%正常工作所以我不会发生什么!!
答案 0 :(得分:3)
我最终创建了UIScrollView的子类,并将其cancelContentTouches值设置为TRUE,我的问题解决了
答案 1 :(得分:1)
将UIScrollView子类化并将下面的代码添加到.m文件中,确实解决了iOS 8下的滚动冻结问题。
代码:
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
UITouch *touch = [touches anyObject];
if(touch.phase == UITouchPhaseMoved)
{
return NO;
}
else
{
return [super touchesShouldBegin:touches withEvent:event inContentView:view];
}
}
这个解决方案见于pasta12的回答https://stackoverflow.com/a/25900859/3433059
答案 2 :(得分:0)
无需子类化ScrollView 只需使用:
yourScrollView.panGestureRecognizer.delaysTouchesBegan =yourScrollView.delaysContentTouches;