3

twitter.com をロードする WebView があるとします。
私のWebViewに表示されるものは次のとおりです。 ここに画像の説明を入力

そして、ここに私が示したいものがあります: ここに画像の説明を入力

WebView で Web サイトのデフォルトの左上隅の位置を変更して、同じ Web サイトの別の位置を表示するにはどうすればよいですか?

4

4 に答える 4

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 のようではないためです。

しかし、これとは別に、それはうまくいく可能性があります;-)

于 2012-10-28T00:45:08.800 に答える
0

UIWebView で JavaScript を実行できます。

[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset=200;"];

これにより、ウィンドウが 200 ピクセル下にスクロールされます。

于 2012-10-22T18:43:03.473 に答える
0

OS X では以下を使用できます。

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%f, %f)", xPos, yPos]];

于 2013-04-24T19:28:06.603 に答える
-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];
于 2012-10-26T14:04:16.283 に答える