twitter.com をロードする WebView があるとします。
私のWebViewに表示されるものは次のとおりです。
そして、ここに私が示したいものがあります:
WebView で Web サイトのデフォルトの左上隅の位置を変更して、同じ Web サイトの別の位置を表示するにはどうすればよいですか?
twitter.com をロードする WebView があるとします。
私のWebViewに表示されるものは次のとおりです。
そして、ここに私が示したいものがあります:
WebView で Web サイトのデフォルトの左上隅の位置を変更して、同じ Web サイトの別の位置を表示するにはどうすればよいですか?
これを使用して移動します(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];