Строка состояния обнаруживает нажатия только тогда, когда UIWebView прокручивается немного - PullRequest
1 голос
/ 04 мая 2011

У меня есть UIWebView в качестве корневого представления UINavigationController.Когда загрузка веб-страницы заканчивается, я скрываю панель навигации и ищу способ показать ее обратно.Прямо сейчас я пытаюсь сделать это, когда пользователь нажимает на строку состояния ( этот подход выглядит для меня более сложным, чем я хочу).

Чтобы выполнить это, во-первых,Я получаю scrollView от webView:

for (id subview in mainWebView.subviews) {
    if ([[subview class] isSubclassOfClass: [UIScrollView class]]) {
        ((UIScrollView *)subview).delegate = self;
    }
}

и затем использую метод делегата:

-(BOOL) scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    return NO;
}

Я надеялся, что это сработает, но вот что происходит:

  • Страница загружается, и панель навигации скрывается (это хорошо)
  • Я пытаюсь коснуться строки состояния, но ничего не происходит (это плохо)
  • Я прокручиваю вниз так,что веб-представление "далеко" от строки состояния
  • Не отпуская веб-просмотр, я касаюсь строки состояния другим пальцем, и это работает!(это странно:)

Оооо, какая-нибудь помощь по этому поводу?Почему это происходит?

Ответы [ 2 ]

1 голос
/ 08 апреля 2012

Я только что попробовал это снова в iOS 5.0, и кажется, что он работает как ожидалось:

[self.webView.scrollView setDelegate:self];
[self.webView.scrollView setScrollsToTop:YES];

, а затем:

-(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}
0 голосов
/ 06 января 2012

У меня была такая же проблема.Я решил это следующим образом:

[[[webView subviews] objectAtIndex:0] setScrollsToTop:NO];

Также вы можете получить доступ к свойству scrollView в iOS 5:

webView.scrollView.scrollsToTop = NO ;
...