有沒有辦法讓UIWebView滾動到頂部,當我觸摸說一個UISearchView在同一個viewController(不使用JavaScript)。如何讓UIWebView滾動到頂部?
事情是這樣的:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[myWebView scrollToTop]; //pseudocode
}
換句話說,什麼,當我觸頂欄還可以通過編程方式發生反應。
有沒有辦法讓UIWebView滾動到頂部,當我觸摸說一個UISearchView在同一個viewController(不使用JavaScript)。如何讓UIWebView滾動到頂部?
事情是這樣的:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[myWebView scrollToTop]; //pseudocode
}
換句話說,什麼,當我觸頂欄還可以通過編程方式發生反應。
如果你不要想要使用JavaScript,沒有公共的API方法來做到這一點。 UIWebViews不會從滾動視圖繼承,所以你不能使用任何常用的方法。正如你所想的那樣,可以用JavaScript來完成。您可以嘗試在UIWebView中查找實際的滾動視圖,但這些視圖都沒有記錄,在生產應用程序中並不是一件好事。
更新 - 從iOS 5開始,您現在可以直接訪問網絡視圖的UIScrollView
- 有關詳細信息,請參閱Reconquistador的答案。
我不相信你會發現任何官方支持的方法來做你想要的。
這是一個非常醜陋,可怕的方式來做到這一點。我正在回答這個問題,告訴你永遠不要做什麼。
for (UIView *subview in webView.subviews)
{
if ([subview isKindOfClass:[UIScrollView class]])
[(UIScrollView*)subview setContentOffset:CGPointZero animated:YES];
}
他的UISearchBar不是UIWebView的子視圖... –
OP詢問如何將UIWebView滾動到0,0。它的觸發如何不相關。 –
這確實有效。我想我會堅持使用JavaScript方法:-)除了看起來像黑客之外,其實是有其他原因嗎? – Gazzer
滾動的UIWebView中通過的Objective-C調用JavaScript的:
NSString *script = @"scrollTo(0, 0)";
[webView stringByEvaluatingJavaScriptFromString:script];
對於平滑滾動,使用圖書館像jQuery:
NSString *script = @"$('html, body').animate({scrollTop:0}, 'slow')";
[webView stringByEvaluatingJavaScriptFromString:script];
super!奇蹟般有效 ! –
這個工作對我來說:
CGPoint topOffset = CGPointMake(0, 0);
//[scrollView setContentOffset: topOffset animated: YES];
[[[webView subviews] lastObject] setContentOffset:topOffset animated:YES];
其中webVie當然,w是UIWebView的子類。
CGPoint top = CGPointMake(0, 0); // can also use CGPointZero here
[myWebView.scrollView setContentOffset:top animated:YES];
(請注意,如果您已設置myWebView.scrollView.contentInset.top
你將要考慮到這一點,而不是隻滾動到CGPointZero。)
僅僅是從iOS5.0開始的? –
我已經在5.1和6.0測試過了,它在它們兩個都工作了 – Reconquistador
+1從iOS5開始可用。 – InsertWittyName
爲什麼不碰你的設備的狀態欄。對於所有基於scrollView的控件,tableView,webView,scrollView,都有一個: 滾動到頂部的手勢是在狀態欄上點擊一下;當此屬性爲YES時,滾動視圖會在發生此手勢時跳轉到內容的頂部。此屬性的默認值爲YES。
訪問UIWebView
的scrollview
並設置YES到方法scrollsToTop
;
WebView.scrollView.scrollsToTop = YES;
希望這會有所幫助!
Swift 3。X
webView.scrollView.setContentOffset(CGPoint.zero, animated: true)
這是真實的之前的iOS 5。請Reconquistador的回答下面一個上最新的解決方案(http://stackoverflow.com/a/11796354/1148702),採用公開訪問'滾動視圖'UIWebView'的屬性。 –
非常真實!發佈iOS 5後,您現在可以更改此設置。 – lxt