2013-09-28 33 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