UIWebView在iOS 7上不会“scrollsToTop”吗?

时间:2013-09-28 05:13:48

标签: ios objective-c uiscrollview ios7

我在一个UIWebView中有两个ViewController,以便在后台预加载“下一页”。

自从在Xcode 5中打开项目后,当点击状态栏时,这些项目不再滚动到顶部。

该应用程序在iOS 7上工作正常,所以我不知道出了什么问题。当其中一个UIWebView被隐藏时,我也setScrollsToTop:NO ...所以显然我缺少了一些东西。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我为这个特定问题编写了一个简单的类。在我的应用中,我们有多个网页浏览量和滚动视图。这使得一切变得容易。

https://gist.github.com/hfossli/6776203

答案 1 :(得分:0)

使用此类别:

的UIView + LogViewHierarchy.h

#import <UIKit/UIKit.h>

@interface UIView (LogViewHierarchy)

-(void) logViewHierarchy;

@end

的UIView + LogViewHierarchy.m

#import "UIView+LogViewHierarchy.h"

@implementation UIView (LogViewHierarchy)


-(void) logViewHierarchy
{

    NSLog(@"%@%@", NSStringFromClass(self.class), NSStringFromCGRect(self.frame));
    [self logSubviews:self depth:1];
}

-(void) logSubviews:(UIView*)view depth:(NSInteger)depth
{
    for (UIView *subview in view.subviews) {
        if ([subview isKindOfClass:[UIScrollView class]]) {
            NSLog(@"%@%@%@ - scrollsToTop: %@", [self paddingString:depth], NSStringFromClass(subview.class), NSStringFromCGRect(subview.frame), ((UIScrollView*)subview).scrollsToTop ? @"YES" : @"NO");
        } else {
            NSLog(@"%@%@%@", [self paddingString:depth], NSStringFromClass(subview.class), NSStringFromCGRect(subview.frame));
        }
        [self logSubviews:subview depth:depth+1];
    }
}

-(NSString*) paddingString:(NSInteger)depth
{
    return [@"" stringByPaddingToLength:depth*2 withString:@" " startingAtIndex:0];
}


@end

然后找到您应用的根视图控制器并添加:

-(void) viewDidAppear:(BOOL)animated
{
    [self.view logViewHierarchy];
}

您将能够看到所有UIScrollView及其scrollsToTop属性。当您设法使输出看起来只有1个UIScrollView具有scrollsToTop == YES时,那么 scrollsToTop 手势应该可以正常工作。

就我而言,logViewHierarchy报告您的所有滚动视图都有scrollsToTop = NO,而您不知道原因,因为我明确将它们设置为YES。 事实证明我将this UIScrollView category留在了我的项目中,并且它在我的所有UIScrollView上重载了一些方法。当我从项目中删除该类别时,我能够从logViewHierarchy获得正确的输出。然后我玩了代码,直到我设法只得到一个scrollsToTop = YES