Iphone 如何使UIWebView滚动到顶部?
当我在同一个viewController中(不使用Javascript)触摸UISearchView时,是否有办法使UIWebView滚动到顶部 大概是这样的:Iphone 如何使UIWebView滚动到顶部?,iphone,objective-c,Iphone,Objective C,当我在同一个viewController中(不使用Javascript)触摸UISearchView时,是否有办法使UIWebView滚动到顶部 大概是这样的: - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { [myWebView scrollToTop]; //pseudocode } 换句话说,当我触摸顶栏时发生的事情也可以通过编程实现 如果您不想使用JavaScript,那么没有公共AP
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[myWebView scrollToTop]; //pseudocode
}
换句话说,当我触摸顶栏时发生的事情也可以通过编程实现 如果您不想使用JavaScript,那么没有公共API方法可以做到这一点。UIWebViews不会从滚动视图继承,因此不能使用任何常用方法。正如您所了解的,可以使用JavaScript。您可以尝试在UIWebView中查找实际的滚动视图,但这些视图都没有文档记录,在生产应用程序中也不是一件好事
更新-从iOS 5开始,您现在可以直接访问web视图的
UIScrollView
-有关更多信息,请参阅Reconquisitor的答案。我不相信您会找到任何官方支持的方法来做您想要的事情。这是一种非常丑陋、可怕的方法。我回答这个问题是为了告诉你什么是永远不要做的
for (UIView *subview in webView.subviews)
{
if ([subview isKindOfClass:[UIScrollView class]])
[(UIScrollView*)subview setContentOffset:CGPointZero animated:YES];
}
通过Objective-C调用JavaScript滚动UIWebView:
NSString *script = @"scrollTo(0, 0)";
[webView stringByEvaluatingJavaScriptFromString:script];
要实现平滑滚动,请使用类似jQuery的库:
NSString *script = @"$('html, body').animate({scrollTop:0}, 'slow')";
[webView stringByEvaluatingJavaScriptFromString:script];
这对我很有用:
CGPoint topOffset = CGPointMake(0, 0);
//[scrollView setContentOffset: topOffset animated: YES];
[[[webView subviews] lastObject] setContentOffset:topOffset animated:YES];
当然,其中webView是UIWebView的子类。在UIWebView中显示PDF,我发现只需重新加载文档即可跳到顶部
CGPoint top = CGPointMake(0, 0); // can also use CGPointZero here
[myWebView.scrollView setContentOffset:top animated:YES];
(请注意,如果您设置了myWebView.scrollView.contentInset.top,您将需要考虑到这一点,而不仅仅是滚动到CGPointZero。)为什么不直接触摸设备的状态栏呢。对于所有基于scrollView的控件、tableView、webView、scrollView,都有一个:
滚动到顶部的手势是点击状态栏;如果此属性为“是”,则当出现此手势时,滚动视图将跳转到内容的顶部。此属性的默认值为YES。访问
UIWebView
的滚动视图
,并将YES设置为方法滚动顶部
WebView.scrollView.scrollsToTop = YES;
希望这有帮助 Swift 3.x
webView.scrollView.setContentOffset(CGPoint.zero, animated: true)
OP询问如何将UIWebView滚动到0,0。它是如何触发的并不重要。这确实有效。我想我会坚持使用JavaScript方法:-)除了看起来像是黑客之外,还有什么理由不这么做吗?+1这应该是可以接受的答案。它既不丑陋也不可怕。只有当苹果改变UIWebView的视图层次结构时,它才会失败,但谁能想象没有滚动视图的web视图呢;)我已经在5.1和6.0两个版本上测试了它,并且在这两个版本上都能正常工作。几天前,我在iOS4上测试过它,但它不起作用这是一种非常昂贵的方法?在iOS5之前是这样的。请参阅下面Reconquistrator的答案,以获取最新的解决方案(),该解决方案使用了
UIWebView
的可公开访问的scrollView
属性。非常正确!发布iOS 5后,您现在可以更改此设置。