Gaz*_*zer 15 iphone objective-c
当我在同一个viewController中触摸UISearchView时,有没有办法让UIWebView滚动到顶部(不使用Javascript).
像这样的东西:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[myWebView scrollToTop]; //pseudocode
}
Run Code Online (Sandbox Code Playgroud)
换句话说,当我触摸顶部栏时发生的事情也可以通过编程方式发生.
Rec*_*dor 25
CGPoint top = CGPointMake(0, 0); // can also use CGPointZero here
[myWebView.scrollView setContentOffset:top animated:YES];
Run Code Online (Sandbox Code Playgroud)
(请注意,如果您已设置myWebView.scrollView.contentInset.top
,则需要将其考虑在内,而不是仅滚动到CGPointZero.)
这是一个非常丑陋,可怕的方法.我正在回答这个问题,告诉你什么都不做.
for (UIView *subview in webView.subviews)
{
if ([subview isKindOfClass:[UIScrollView class]])
[(UIScrollView*)subview setContentOffset:CGPointZero animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
如果你不希望使用JavaScript没有公开API的方法来做到这一点.UIWebViews不会从滚动视图继承,因此您无法使用任何常用方法.正如您所知,可以使用JavaScript.你可以尝试在UIWebView中找到实际的滚动视图,但它都是未记录的,在生产应用程序中并不是一件好事.
更新 - 从iOS 5开始,您现在可以直接访问Web视图UIScrollView
- 有关详细信息,请参阅Reconquistador的答案.
通过Objective-C调用JavaScript来滚动UIWebView:
NSString *script = @"scrollTo(0, 0)";
[webView stringByEvaluatingJavaScriptFromString:script];
Run Code Online (Sandbox Code Playgroud)
要平滑滚动,请使用类似jQuery的库:
NSString *script = @"$('html, body').animate({scrollTop:0}, 'slow')";
[webView stringByEvaluatingJavaScriptFromString:script];
Run Code Online (Sandbox Code Playgroud)
访问UIWebView
's scrollview
并将YES设置为方法scrollsToTop
;
WebView.scrollView.scrollsToTop = YES;
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
归档时间: |
|
查看次数: |
17039 次 |
最近记录: |