У меня та же проблема, и отказались от 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. :/
(Мое тестирование разработало теорию о том, что в настоящее время из-за нового файла topLayoutGuide в iOS7 нарушается либо window.pageYOffset, либо что Apple переделала реализацию UIWebViews, и теперь вы прокручиваете UIScrollView, а не UIWebView &, так что javascript не может обнаружить прокрутку из-за прокрутки на более низком уровне?)
Fix, кажется, называть [супер scrollViewDidScroll: Scrollview], если работает на iOS7 в делегатом – Thys