UIScrollView scrollToTop没有被iPhone调用

时间:2012-07-18 20:27:59

标签: iphone objective-c ios ipad

我有一个通用的应用程序,代码是一样的。我有一个UIScrollView,其中scrollToTop在iPad上工作但在iPhone上没有。我很沮丧。

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

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

委托scrollViewShouldScrollToTop也只在iPad中调用,而不是在iPhone中调用。

3 个答案:

答案 0 :(得分:1)

请查看my answer您提到过的问题。我刚刚添加它。

<强> 修改

我没有我制作的原始代码,但它应该是这样的:

-(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];
            }
        }
    }
}

你可以这样称呼它:

[self cleanUp:self.view];

你可能还需要更复杂的例程(有时你可能在scrollView中有一个tableView或类似的东西):

-(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];
        }
    }
}

答案 1 :(得分:1)

我刚刚接受了@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];
}

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

答案 2 :(得分:0)

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

如果有帮助,请告诉我。