Как сделать прокрутку UIWebView вверху?
Есть ли способ сделать прокрутку UIWebView вверху, когда я коснусь, скажу UISearchView в том же viewController (без использования Javascript).
Что-то вроде этого:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[myWebView scrollToTop]; //pseudocode
}
Другими словами, то, что происходит, когда я касаюсь верхней панели, также может быть программным.
Ответы
Ответ 1
Если вы не хотите использовать JavaScript, для этого не существует общедоступного метода API. UIWebViews не наследуются от представлений прокрутки, поэтому вы не можете использовать какие-либо обычные методы. Как вы поняли, это возможно сделать с JavaScript. Вы можете попытаться найти фактическое представление прокрутки в UIWebView, но все это недокументировано и не очень хорошо делать в производственном приложении.
Обновить - с iOS 5 теперь вы можете получить прямой доступ к веб-просмотру UIScrollView
- см. ответ Reconquistador для получения дополнительной информации.
Ответ 2
CGPoint top = CGPointMake(0, 0); // can also use CGPointZero here
[myWebView.scrollView setContentOffset:top animated:YES];
(Обратите внимание, что если вы установили myWebView.scrollView.contentInset.top
, вам нужно принять это во внимание, а не просто прокручивать до CGPointZero.)
Ответ 3
Вот действительно уродливый, ужасный способ сделать это. Я отвечаю на это, чтобы показать вам, что никогда не делать.
for (UIView *subview in webView.subviews)
{
if ([subview isKindOfClass:[UIScrollView class]])
[(UIScrollView*)subview setContentOffset:CGPointZero animated:YES];
}
Ответ 4
Прокрутите UIWebView, вызвав JavaScript через Objective-C:
NSString *script = @"scrollTo(0, 0)";
[webView stringByEvaluatingJavaScriptFromString:script];
Для плавной прокрутки используйте библиотеку jQuery:
NSString *script = @"$('html, body').animate({scrollTop:0}, 'slow')";
[webView stringByEvaluatingJavaScriptFromString:script];
Ответ 5
Откройте UIWebView
scrollview
и установите YES в метод scrollsToTop
;
WebView.scrollView.scrollsToTop = YES;
Надеюсь, это поможет!
Ответ 6
Я не верю, что вы найдете какой-либо официально поддерживаемый метод, чтобы делать то, что вы хотите.
Ответ 7
Это работает для меня:
CGPoint topOffset = CGPointMake(0, 0);
//[scrollView setContentOffset: topOffset animated: YES];
[[[webView subviews] lastObject] setContentOffset:topOffset animated:YES];
Если webView является подклассом UIWebView, конечно.
Ответ 8
почему бы просто не коснуться строки состояния вашего устройства. для всех элементов управления на основе scrollView, tableView, webView, scrollView, есть:
Жест по прокрутке вверх - это щелчок по строке состояния; когда это свойство равно YES, просмотр прокрутки переходит в верхнюю часть содержимого, когда этот жест происходит. Значением по умолчанию этого свойства является YES.
Ответ 9
Swift 3.x
webView.scrollView.setContentOffset(CGPoint.zero, animated: true)
Ответ 10
Отображая PDF файл в UIWebView, я обнаружил, что вы можете перейти к вершине просто перезагрузив документ.