我目前有以下代码来检查到达页面末尾的距离;
var untilPageEnd = $(document).height() - (window.pageYOffset + window.innerHeight);
在iOS7之前的应用中,这可以完美运行。但是现在我的iOS7应用程序window.pageYOffset
一直返回0。有没有任何已知的解决方案?
window.pageYOffset在safari浏览器中有效,但在UIWebView中无效
答案 0 :(得分:2)
如果在UIWebView上覆盖UIScrollViewDelegate?
在iOS7中,你需要像那样进行修改
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[super scrollViewDidScroll:scrollView];
//TO DO
//code goes here
}
答案 1 :(得分: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中使用。
是的,这是一个黑客,但这就是我现在正在iOS7下工作的方式。 :/
(我的测试已经产生了一个理论,即由于iOS7中新的topLayoutGuide内容或者Apple已经重做了UIWebViews的实现方式,windows.pageYOffset现在已经被破坏了,现在你正在滚动UIScrollView而不是UIWebView& so由于滚动发生在较低级别,javascript无法检测到滚动?)