0

私がする必要があるのは、ボタンをクリックするか特定のアクションを実行するときに、hrefリンクをクリックしたかのようにWebビューを転送したいということです。関数は、どのリンクに移動するかを知るためにhrefidを取得する必要があります。

これが私がこれまでに試したことです:

      [WebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.location.hash='%@'",footNoteNum]];
    float offsetX = [[WebView stringByEvaluatingJavaScriptFromString:@"window.pageXOffset"] floatValue];
    NSLog(@"offsetX %f", offsetX);
    int page = ceil(offsetX/748);

    page++;
    NSLog(@"page %i", page);
    [self scrollToPage:page];

しかし、webviewが25ページを超えると、offsetXに間違った数値が表示され始めます。

ですから、動的にクリックできるhrefリンクのようにできるとしたら、スクロールバーを使用すると、Webビューの正しい位置に移動できると思いました。

4

2 に答える 2

1

同様の問題を解決する方法(特定のtableView行をクリックして、同じシーンのUIWebViewの特定の場所に移動する)は、HTMLにアンカーを埋め込み、それらに直接移動することです。もちろん、これは、そのような方法で脚注に移動することを制御できることを前提としています。

アンカーは、次のように各脚注のテキストの直前にHTMLの各ページに配置されます。

<a name=footnote12>

そして、あなたのコードでは、次のようになります。

    // baseURLForPageWithoutAnchor is the NSURL* for the page prior to going to any footnotes

    NSString* anchor = [@"#" stringByAppendingFormat:@"footnote%d", footNoteNum];
    NSString* baseForAnchor = baseURLForPageWithoutAnchor.absoluteString;
    NSURL* anchorURL = [NSURL URLWithString:[baseForAnchor stringByAppendingString:anchor]];
    [self.nestedWebView loadRequest:[NSURLRequest requestWithURL:anchorURL]];

これはアンカーに直接ジャンプし、パーセンテージでスクロールしようとしていたUIWebViewへのパーセンテージを計算する必要がなくなります。

于 2012-12-16T02:34:41.573 に答える
0
- (void)viewDidLoad
{
   [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"YOUR_STRING_WITHOUT_ANCHOR"]]];
}

- (void)webViewDidStartLoad:(UIWebView *)_webView {
   [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('YOUR_ANCHOR_HERE_WITHOUT_#').scrollIntoView(true);"];
}
于 2014-05-05T01:09:26.800 に答える