我们说我有一个加载twitter.com的WebView 这是我的WebView中出现的内容:
这就是我要展示的内容:
如何在WebView上更改网站的默认左上角位置以显示同一网站的另一个位置?
答案 0 :(得分:2)
我使用它来移动它(你需要设置frameLoadDelegate):
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
if (frame == self.myWebview.mainFrame)
{
DOMDocument *mainDoc = [self.myWebview.mainFrame DOMDocument];
DOMNodeList *list = [mainDoc getElementsByClassName:@"front-signin js-front-signin"];
DOMNode *loginElement = [list item:0];
NSRect myRect = loginElement.boundingBox;
[self.myWebview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%d,%d);", (int)myRect.origin.x, (int)myRect.origin.y]];
}
}
“front-signin js-front-signin”是www.twitter.com源html中使用的类的名称。
因此,它很容易依赖于随时可能发生的变化。
在这种情况下,还有一个不移动的标题。因此要么考虑它并显示它,要么将视图移动到此标题的大小并隐藏它。
您需要调整scrollTo调用,使其在视图中居中。
你可能想要考虑一旦加载后淡出视图,导致滚动有点生涩,而不是像osx那样。
但除此之外,它可以起作用; - )
答案 1 :(得分:0)
您可以在UIWebView中执行javascript:
[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset=200;"];
这应该将窗口向下滚动200像素。
答案 2 :(得分:0)
您可以在OS X上使用以下内容:
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%f, %f)", xPos, yPos]];
答案 3 :(得分:-3)
您还可以使用webview的scrollView contentOffset。
UIWebView * webView = [[UIwebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.twitter.com"]]];
[webView.scrollView setContentOffset:CGPointMake(50, 60)];
[webView release];