ios - 为嵌套 ScrollView 启用区域滚动

标签 ios objective-c uiscrollview

我正在使用此处描述的嵌套 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 中的滚动触摸。

enter image description here

最佳答案

您可以重载方法 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/

相关文章:

ios - 苹果关于 HTTPs 和 iPv6 的新安全政策-澄清

objective-c - 对 block 进行类型定义是如何工作的

ios - 尝试重新加载部分时断言失败错误

ios - UITableView 与 UIRefreshControl 的拖动距离

ios - 查看 Controller 关闭问题

ios - 禁用carbonKit半透明效果

objective-c - xcode 4.3 - Storyboard - iAd

ios - NSTimer initWithFireDate 无法正常工作

ios - UIScrollView 滚动太多

IOS 7 缩放在 ScrollView 中不起作用