Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIScrollView';在一个框架内拖动滚动_Ios_Uiscrollview - Fatal编程技术网

Ios UIScrollView';在一个框架内拖动滚动

Ios UIScrollView';在一个框架内拖动滚动,ios,uiscrollview,Ios,Uiscrollview,我有一个父UIScrollView,其中包含一堆子UIScrollView,每个scrollview都可以向各个方向滚动。在每个子视图的顶部,都有一个UIView,即父视图的子视图 我只想在用户从上视图之一拖动时启用父级滚动 有这样做的想法吗?谢谢 您可以尝试使用touchsbegind检测用户正在触摸的位置:如果它在其中一个UIView中,则可以禁用所有子ScrollView的滚动(甚至交互)。因此,在代码中: -(void)touchesBegan:(NSSet *)touches

我有一个父UIScrollView,其中包含一堆子UIScrollView,每个scrollview都可以向各个方向滚动。在每个子视图的顶部,都有一个UIView,即父视图的子视图

我只想在用户从上视图之一拖动时启用父级滚动


有这样做的想法吗?谢谢

您可以尝试使用touchsbegind检测用户正在触摸的位置:如果它在其中一个UIView中,则可以禁用所有子ScrollView的滚动(甚至交互)。因此,在代码中:

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

        //check if touch is in one of the UIViews

        //if so disable child UIScrollView interaction like so:
        childScrollView.scrollEnabled = NO;
    }

然后在触摸结束的方法中,在子滚动视图上重新启用滚动。

好的,我终于找到了一些东西!通过覆盖父scrollview的回调
-(UIView*)hitTest:(CGPoint)pointwithevent:(UIEvent*)event

`-(UIView*)hitTest:(CGPoint)point with event:(UIEvent*)event {


}`

这正是我正在寻找的解决方案,但不幸的是,当我滚动时,touchesbeent:没有被调用。
if (CGRectContainsPoint(myFrame, point))
{
    self.scrollEnabled = YES;
}
else
{
    self.scrollEnabled = NO;
}

return [super hitTest:point withEvent:event];