2013-09-25 70 views
0

我目前有以下代码来检查它到底有多远,直到页面结束;window.pageYOffset无法在iOS7中工作

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

在iOS7以前的应用程序,这将完美的工作。但现在我的iOS7应用程序window.pageYOffset一直返回0。有没有已知的解决方案?

在Safari浏览器window.pageYOffset工作,但不是在一个UIWebView

回答

2

如果您覆盖UIWebView上的UIScrollViewDelegate?

在iOS7,你需要修改一样,

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    [super scrollViewDidScroll:scrollView]; 
    //TO DO 
    //code goes here 
} 
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传回您的UIWebView,以便在您的JavaScript中使用。

是的,这是一个黑客攻击,但这是我现在正在iOS7下工作。 :/

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

+0

修复似乎是调用[超级scrollViewDidScroll:滚动视图]如果在委托上iOS7运行 – Thys

相关问题