我几周来一直在处理这个问题,但仍然没有解决方案。请帮忙。
我有一个带图像的大滚动视图。每个图像都是屏幕宽,并启用了分页。
在这个滚动视图上的,在底部,我有另一个带按钮的滚动视图。每个图像的每个按钮。当我按下图像按钮时,大滚动视图会跳转到图像。
因为我有很多图像,所以我在小滚动视图上有很多按钮。
现在,大卷轴和小卷轴工作正常,按钮也正常。
我的问题从小卷轴的远端开始。当我在小卷轴的末尾(但仍然在大卷轴的中间)时,我不希望大手指移动,当我将手指移动到死胡同时。你可以说我想将小卷轴与大卷轴分开,但仍然将它留作子视图(因为我希望它与大卷轴一起移动)。
我已经尝试了继承小卷轴,按钮,覆盖hitTest和touchesBegan / End,但到目前为止还没有。
我真的很沮丧,因为我的客户要求这样做。
我被谷歌搜索了这么久,我找不到任何东西!
HELLLPPPPP!
答案 0 :(得分:0)
我发现这段代码在我的一个项目中非常有用:
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView* result = [super hitTest:point withEvent:event];
if (/* result or any of its superviews are equal to your little scroll view */) {
[self setContentOffset:CGPointZero animated:YES];
self.scrollEnabled = NO;
} else {
self.scrollEnabled = YES;
}
return result;
}
如果我理解你的问题,我认为这会给你理想的行为。我在if语句(注释)中有一些伪代码,因为遍历所有超级视图都需要循环,这会使代码更加复杂,但如果您熟悉视图层次结构,您通常可以找到更简单的解决方案
我希望这会有所帮助,如果您在理解代码时遇到任何问题,我将很乐意为您解释。
编辑:基本的想法是,如果您的手指触摸小滚动视图,则在大滚动视图中滚动滚动,以便大滚动视图不会滚动。如果您的手指未触及小滚动视图,则滚动大滚动视图将重新打开,并且应该正常运行。