Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.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
UIScrollView scrollToTop在iPhone中未被调用_Iphone_Objective C_Ios_Ipad - Fatal编程技术网

UIScrollView scrollToTop在iPhone中未被调用

UIScrollView scrollToTop在iPhone中未被调用,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,我有一个通用的应用程序,代码是一样的。我有一个UIScrollView,其中scrollToTop可以在iPad上运行,但不能在iPhone上运行。我对此感到非常沮丧 我知道有类似的帖子,但事实并非如此。在此之前,我在iPad和iPhone上都有滚动功能。知道要找什么吗 代码的结构是这样的。我有一个叫做a的主VC,然后有一个叫做B的VC,还有一个叫做C的VC,它有一个UIScrollView。我添加了C作为B的子视图控制器。然后B作为A的孩子VC。现在C上的scroll视图没有scrollToT

我有一个通用的应用程序,代码是一样的。我有一个UIScrollView,其中scrollToTop可以在iPad上运行,但不能在iPhone上运行。我对此感到非常沮丧

我知道有类似的帖子,但事实并非如此。在此之前,我在iPad和iPhone上都有滚动功能。知道要找什么吗

代码的结构是这样的。我有一个叫做a的主VC,然后有一个叫做B的VC,还有一个叫做C的VC,它有一个UIScrollView。我添加了C作为B的子视图控制器。然后B作为A的孩子VC。现在C上的scroll视图没有scrollToTop工作

代理scrollViewShouldScrollToTop也仅在iPad中使用,而在iPhone中不使用。

请看一看您提到的问题。我刚才才加上

编辑

我没有自己编写的原始代码,但应该是这样的:

-(void)cleanUp:(UIScrollView*)view{
    if([view isKindOfClass:[UIScrollView class]]){
        view.scrollsToTop = NO;
    }else{
        for(UIScrollView* subview in view.subviews){
            if([subview isKindOfClass:[UIView class]]){
                [self cleanUp:subview];
            }
        }
    }
}
-(void)cleanUp:(UIScrollView*)view{
    if([view isKindOfClass:[UIScrollView class]]){
        view.scrollsToTop = NO;
    }
    for(UIScrollView* subview in view.subviews){
        if([subview isKindOfClass:[UIView class]]){
            [self cleanUp:subview];
        }
    }
}
你可以这样称呼它:

[self cleanUp:self.view];
您可能还需要该例程的更严格的变体(有时您可能在scrollView或类似的东西中有一个tableView):


如果可能,请在此处粘贴添加子视图代码。看起来问题在于scrollview所在的视图隐藏在其他视图后面。尝试更改添加子视图的顺序。或者您也可以尝试使用bringSubviewtoFront属性将scrollview设置在顶部


如果有帮助,请告诉我。

我刚刚采用了@Ariel的解决方案,并做了一些改进,希望与大家分享:

+ (void)globalDisableScrollToTop:(UIView *)_view;
{
    // Check whether we got a scroll view
    if ([_view isKindOfClass:[UIScrollView class]])
    {
        // Disable scroll to top
        ((UIScrollView *)_view).scrollsToTop = NO;
    }

    // Iterate all subviews
    for (UIView *view in _view.subviews)
    {
        // Recursive call of this method
        [self globalDisableScrollToTop:view];
    }
}
或无评论:

+ (void)globalDisableScrollToTop:(UIView *)_view;
{
    if ([_view isKindOfClass:[UIScrollView class]])
        ((UIScrollView *)_view).scrollsToTop = NO;

    for (UIView *view in _view.subviews)
        [self globalDisableScrollToTop:view];
}

它现在修复了所有子视图,可以作为静态方法(根滚动视图类的)实现。

可能重复@DavidRönnqvist ys我已经在上面提到过了,我已经读过了