2013-09-28 32 views
1

我有两个UIWebView在一个单一的ViewController为了预加载一个在后台的“下一页”。UIWebView不会不会在iOS 7上“滚动到顶部”?

由于在Xcode 5中打开项目,当状态栏被点击时,它们不再滚动到顶部。

该应用程序在iOS 7中工作正常,所以我不知道什么是错的。当其中一个UIWebView隐藏时,我也setScrollsToTop:NO ...所以很明显我缺少的东西。

任何想法?

+0

在这里发布您的代码 –

+1

它只是界面生成器..... –

回答

1

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

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

+0

嗯,有趣。 –

+0

我真诚地发现的解决方案只是听取顶部20像素的“点按”区域,并将具有“滚动”功能的任何东西滚动到顶部,动画设置为YES。它不漂亮,但它的工作原理。 - 下次遇到此问题时,我会检查一下您的解决方案。 –

+0

这是一个有趣的方法:) – hfossli

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

您将可以看到所有UIScrollViews及其scrollsToTop性能。当你设法让你的输出看起来像只有1个UIScrollView,它有scrollsToTop == YES,那么你的手势应该可以正常工作。

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