我知道之前已经提出类似的问题,但似乎从未得到过回答。我有一个UIWebView并按字符串添加一些内容。我使用UIWebView,因为我动态地添加了一些图像,并使用其他HTML功能。此示例代码已简化。
NSString *myHtmlString = @"SOME LONG TEST STRING 1234567890 123456789 0123456789 0123456789 0123456789 01234567890 WWWWWWWWWW WWWWWWWWWW WWWYYYYYYY YYYYYYYYYY YYYYYYYYYY YYYYYYYYYY YYYYYYYYYY YYYYYYYYY YYYYYYYWWW WWWWWWWWWW WWWWWWWWWW WWWXXXXXXX XXXXXXXXXX XXXZZZZZZZ THIS IS THE END I WANT TO SEE";
NSString *myPath = [[NSBundle mainBundle] bundlePath];
NSURL *myBaseURL = [NSURL fileURLWithPath:myPath];
[myWebView loadHTMLString:myHtmlString baseURL:myBaseURL];
我想看到的是字符串的结尾。我可以在那里滚动,没问题。但我想以编程方式去那里。
答案 0 :(得分:24)
这很简单。首先,您需要获取网页的高度:
NSInteger height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue];
现在您将文档的高度存储在height变量中。要滚动到底部,您必须再次使用javascript:
NSString* javascript = [NSString stringWithFormat:@"window.scrollBy(0, %d);", height];
[webView stringByEvaluatingJavaScriptFromString:javascript];
当然你需要在适当的时候给他们打电话。那是
– webViewDidFinishLoad:(UIWebView *)webView
webview委托的方法。
希望这有用, 的Pawel
答案 1 :(得分:8)
在iOS 5+中,您可以从-(void)webViewDidFinishLoad:(UIWebView *)webView
- (void)webViewScrollToBottom:(UIWebView *)webView
{
CGFloat scrollHeight = webView.scrollView.contentSize.height - webView.bounds.size.height;
if (0.0f > scrollHeight)
scrollHeight = 0.0f;
webView.scrollView.contentOffset = CGPointMake(0.0f, scrollHeight);
}
答案 2 :(得分:4)
这是向下滚动动画:
的方法- (void)webViewDidFinishLoad:(UIWebView *)webView
{
CGPoint bottomOffset = CGPointMake(0, self.myWebView.scrollView.contentSize.height - self.myWebView.scrollView.bounds.size.height);
[self.myWebView.scrollView setContentOffset:bottomOffset animated:YES];
}
答案 3 :(得分:1)
SWIFT 4.x
这是向下滚动动画:
的方法func webViewDidFinishLoad(_ webView: UIWebView) {
var scrollHeight: CGFloat = webView.scrollView.contentSize.height - webView.bounds.size.height
if (0.0 > scrollHeight) {
scrollHeight = 0.0
}
webView.scrollView.setContentOffset(CGPoint.init(x: 0.0, y: scrollHeight), animated: true)
}