1

私はユニバーサルアプリを持っていますが、コードは同じです。私は UIScrollView を持っていますが、これには scrollToTop が iPad では動作しますが、iPhone では動作しません。私はこれにかなりイライラしています。

I know there's a similar thread posted here, but that is not the case. I used to have the scrolling to work before this both on the iPad and iPhone. Any idea what to look for?

The structure of the code is like this. I have a mainVC called A. I then have a VC called B. There is also another VC called C, which has a UIScrollView. I added C as B's child view controller. and then B as A's child VC. Now the scroll view on C did not have the scrollToTop working.

The delegate scrollViewShouldScrollToTop is also called only in the iPad, not in the iPhone.

4

3 に答える 3

1

あなたが話している質問に対する私の答えを見てください。少し前に追加しました。

編集

作成した元のコードはありませんが、次のようになります。

-(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];
        }
    }
}
于 2012-07-18T20:43:19.183 に答える
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];
}

すべてのサブビューが修正され、(ルート スクロール ビュー クラスの) 静的メソッドとして実装できるようになりました。

于 2013-01-10T17:05:21.683 に答える
0

可能であれば、サブビューの追加コードをここに貼り付けてください。問題は、スクロールビューが存在するビューが他のビューの背後に隠れていることです。サブビューを追加する順序を変更してみてください。または、スクロールビューを一番上に設定するために、bringSubviewtoFront プロパティを試すこともできます。

それが役立つかどうか教えてください。

于 2012-07-18T21:10:22.230 に答える