0

現在、ページの最後に到達するまでの距離を確認する次のコードがあります。

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

iOS7 より前のアプリでは、これは完全に機能します。しかし、私の iOS7 アプリでwindow.pageYOffsetは常に 0 が返されます。これに対する既知の解決策はありますか?

window.pageYOffset は Safari ブラウザーでは機能しますが、UIWebView では機能しません

4

2 に答える 2

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その後、JavaScript で使用するために UIWebView に戻すことができます。

はい、これはハックですが、iOS7 で現在これを機能させる方法です。:/

(私のテストでは、window.pageYOffset が iOS7 の新しい topLayoutGuide によって現在壊れているか、Apple が UIWebViews の実装方法をやり直しており、UIWebView ではなく UIScrollView をスクロールしているため、javascript が検出できないという理論が生まれました。より低いレベルで発生するスクロールによるスクロール?)

于 2013-10-05T01:33:26.347 に答える