0

我目前有以下代码来检查到达页面末尾还有多远;

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

在 iOS7 之前的应用程序中,这将完美运行。但现在在我的 iOS7 应用程序中一直window.pageYOffset返回 0。有什么已知的解决方案吗?

window.pageYOffset 在 safari 浏览器中有效,但在 UIWebView 中无效

4

2 回答 2

2

如果覆盖 UIWebView 上的 UIScrollViewDelegate?

在iOS7中,你需要这样修改

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [super scrollViewDidScroll:scrollView];
    //TO DO
    //code goes here
}
于 2013-10-23T16:51:10.000 回答
0

我遇到了同样的问题,并且在 iOS7 下暂时放弃了 window.pageYOffset - 自 iOS3 以来,相同的代码对我有用!

我的解决方案:我有一个 UIWebView 的子类,我使用它来实现

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

方法&因为我有

CGFloat newOffY = scrollView.contentOffset.y + topLength

通过以下方式从包含 UIViewController 设置 topLength:

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

然后,您可以将newOffY回传到您的 UIWebView 以在您的 javascript 中使用。

是的,这是一个 hack,但这就是我现在在 iOS7 下如何让它工作的方式。:/

(我的测试产生了一个理论,即 window.pageYOffset 现在由于 iOS7 中的新 topLayoutGuide 内容而被破坏,或者 Apple 已经重做 UIWebViews 的实现方式,并且您现在滚动的是 UIScrollView 而不是 UIWebView &所以javascript无法检测到由于滚动发生在较低级别的滚动?)

于 2013-10-05T01:33:26.347 回答