2013-09-25 61 views
0

我目前有以下代碼來檢查它到底有多遠,直到頁面結束;window.pageYOffset無法在iOS7中工作

var untilPageEnd = $(document).height() - (window.pageYOffset + window.innerHeight); 

在iOS7以前的應用程序,這將完美的工作。但現在我的iOS7應用程序window.pageYOffset一直返回0。有沒有已知的解決方案?

在Safari瀏覽器window.pageYOffset工作,但不是在一個UIWebView

回答

2

如果您覆蓋UIWebView上的UIScrollViewDelegate?

在iOS7,你需要修改一樣,

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    [super scrollViewDidScroll:scrollView]; 
    //TO DO 
    //code goes here 
} 
0

我有同樣的問題,並已經放棄了window.pageYOffset的時間iOS7下是 - 相同的代碼所工作過我從iOS3開始!

我的解決辦法:我的UIWebView的子類,我使用實現

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

方法&中,我已

CGFloat newOffY = scrollView.contentOffset.y + topLength

與topLength正在從含有設置UIViewController通過:

CGFloat topLength = 0; 
    CGFloat bottomLength = 0; 
    if([self respondsToSelector:@selector(topLayoutGuide)] && !self.isFullScreen) { 
     topLength = [[self topLayoutGuide] length]; 
     bottomLength = [[self bottomLayoutGuide] length]; 
    } 

然後,您可以將newOffY傳回您的UIWebView,以便在您的JavaScript中使用。

是的,這是一個黑客攻擊,但這是我現在正在iOS7下工作。 :/

(我的測試已經產生了一個理論,即window.pageYOffset現在由於iOS7中新的topLayoutGuide東西而被破壞,或者Apple已經重新實現了UIWebViews的實現方式,現在您正在滾動UIScrollView而不是UIWebView &所以javascript無法檢測到由於滾動發生在較低級別的滾動?)

+0

修復似乎是調用[超級scrollViewDidScroll:滾動視圖]如果在委託上iOS7運行 – Thys

相關問題