我正在使用此处描述的嵌套 ScrollView 来创建横向滚动。 https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/UIScrollView_pg/NestedScrollViews/NestedScrollViews.html
是否可以定义一个用户可以触摸滚动的区域,同时仍将这些触摸传递给嵌套的 ScrollView ?
这是一个使用该文档链接中的图像的示例。如果用户在右侧滚动,我只希望 UIScrollView A
的红色区域可滚动,同时仍将触摸传递给 UIScrollView B
。
这里的问题是,如果我使用 -pointInside:withEvent:
之类的方法阻止触摸,那么嵌套的 ScrollView 将无法触摸。我希望嵌套 ScrollView 接受整个 View 中的滚动,但父级只接受在本例中标记为红色的部分 View 中的滚动触摸。
最佳答案
您可以重载方法 hitTest ,在您的父 View 中。此方法应返回事件 ScrollView 。
您还应该编写一些自定义代码来管理可触摸区域。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* result = [super hitTest:point withEvent:event];
if (result)
{
if ([self scrollChildWithPoint:point])
{
result = self.childScrollView;
}
else if([self scrollParentWithPoint:point])
{
result = self.parentScrollView;
}
else
{
result = nil;
}
}
return result;
}
关于ios - 为嵌套 ScrollView 启用区域滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388520/