所以,我在滚动视图中有2个Scrollviews,它填满了整个ViewController。
所以第一个SV滚动没有问题,设置了2个子SV的contentSize。
不幸的是,我认为它必须是Autolayout的东西......如果我将其关闭,1.SV不会滚动但是子SV。任何想法如何解决?
答案 0 :(得分:2)
尝试在自定义hitTest:withEvent:
子类中覆盖ScrollView
。以下代码应该使内部UIScollView处理它的所有触摸。
@interface MyCustomScrollView : UIScrollView
@end
@implementation MyCustomScrollView
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView* handler = nil;
if ([self pointInside:point withEvent:event]) {
for (UIView* view in self.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
CGPoint subPoint = [self convertPoint:point toView:view];
handler = [view hitTest:subPoint withEvent:event];
if (handler) {
break;
}
}
}
if (nil == handler) {
handler = [super hitTest:point withEvent:event];
}
}
return handler;
}
@end
注意:可滚动区域内的可滚动子区域会导致糟糕的用户体验。请考虑调整内部滚动视图的大小以适合其内容。
答案 1 :(得分:0)
一般来说,scrollview会播放所有触摸事件。因此,scrollview的子视图不会获得触摸事件。要在子视图中启用触摸事件,您可以从滚动视图将触摸事件传递给下一个响应者。
你可以通过在scrollview子类中使用touch touches方法来实现。可以找到带有示例的详细说明here。