假设我有一个加载 twitter.com 的 WebView。
这是我的 WebView 中显示的内容:
这就是我想要展示的:
如何更改 WebView 上网站的默认左上角位置以显示同一网站的另一个位置?
假设我有一个加载 twitter.com 的 WebView。
这是我的 WebView 中显示的内容:
这就是我想要展示的:
如何更改 WebView 上网站的默认左上角位置以显示同一网站的另一个位置?
我使用它来移动它(你需要设置 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。
但除此之外,它可以工作;-)
您可以在 UIWebView 中执行 javascript:
[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset=200;"];
这应该将窗口向下滚动 200 像素。
您可以在 OS X 上使用以下内容:
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%f, %f)", xPos, yPos]];
您还可以使用 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];