我目前有以下代码来检查到达页面末尾还有多远;
var untilPageEnd = $(document).height() - (window.pageYOffset + window.innerHeight);
在 iOS7 之前的应用程序中,这将完美运行。但现在在我的 iOS7 应用程序中一直window.pageYOffset
返回 0。有什么已知的解决方案吗?
window.pageYOffset 在 safari 浏览器中有效,但在 UIWebView 中无效
我目前有以下代码来检查到达页面末尾还有多远;
var untilPageEnd = $(document).height() - (window.pageYOffset + window.innerHeight);
在 iOS7 之前的应用程序中,这将完美运行。但现在在我的 iOS7 应用程序中一直window.pageYOffset
返回 0。有什么已知的解决方案吗?
window.pageYOffset 在 safari 浏览器中有效,但在 UIWebView 中无效
如果覆盖 UIWebView 上的 UIScrollViewDelegate?
在iOS7中,你需要这样修改
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[super scrollViewDidScroll:scrollView];
//TO DO
//code goes here
}
我遇到了同样的问题,并且在 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无法检测到由于滚动发生在较低级别的滚动?)