У меня есть приложение с табличным представлением в корне контроллера навигации, и при выборе ячейки таблицы он отображает новый контроллер представления, который содержит только UIWebView (с панелью инструментов и панелью навигации).
В зависимости от того, как я представляю новое веб-представление, функция, с помощью которой пользователь может нажать на строку состояния вверху и прокрутить веб-просмотр вверх, либо работает, либо не работает.
Если я использую:
- (void) presentModalViewController: (UIViewController *) modalViewController анимированный: (BOOL) анимированный
в RootView, тогда веб-просмотр прокручивается вверх.
Если я изменю эту одну строку кода и вместо этого использую:
- (void) pushViewController: (UIViewController *) viewController анимированный: (BOOL) анимированный
на контроллере навигации, функция scrollsToTop перестает работать.
Однако я действительно хочу использовать метод pushViewController по другим причинам в контексте приложения. НО, я также хочу сохранить поведение scrollsToTop.
До сих пор я пробовал различные подходы, некоторые из которых описаны здесь:
-Попытка установить внутреннее свойство scrollView scrollsToTop для веб-просмотра
((UIScrollView *)[[webView valueForKey:@"_internal"] valueForKey:@"scroller"]).scrollsToTop = YES;
(Нет заметного эффекта).
-Изменение порядка установки свойств NavBar или их полное отключение -Добавление дополнительных вызовов "window makeKeyAndOrderFront" после нажатия нового представления.
Я не верю, что есть другие представления, которые могли бы претендовать на свойство "scrollsToTop" (и первый тест, приведенный выше, в любом случае это доказывает).
Если не считать попытки встроить UIWebView в UIScrollView, что, как я ожидаю, будет болезненным, у меня закончились маршруты для изучения, чтобы решить эту проблему.
Я надеюсь, что кто-то еще нашел способ исправить это?