私は同じ問題を抱えており、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 が検出できないという理論が生まれました。より低いレベルで発生するスクロールによるスクロール?)