2013-09-25 3 views
0

В настоящее время у меня есть следующий код, чтобы проверить, насколько далеко он достигнут до конца страницы;window.pageYOffset не работает в iOS7

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

В приложениях, предшествующих iOS7, это будет работать отлично. Но теперь в моем приложении iOS7 window.pageYOffset возвращает 0 все время. Есть ли известное решение для этого?

window.pageYOffset работает в сафари браузер, но не в UIWebView

ответ

2

Если вы перезаписываете UIScrollViewDelegate на UIWebView?

В 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. :/

(Мое тестирование разработало теорию о том, что в настоящее время из-за нового файла topLayoutGuide в iOS7 нарушается либо window.pageYOffset, либо что Apple переделала реализацию UIWebViews, и теперь вы прокручиваете UIScrollView, а не UIWebView &, так что javascript не может обнаружить прокрутку из-за прокрутки на более низком уровне?)

+0

Fix, кажется, называть [супер scrollViewDidScroll: Scrollview], если работает на iOS7 в делегатом – Thys

Смежные вопросы