HTMLファイルをWebビューに表示しています。ユーザーがハイパーリンクをクリックしたときに、同じアプリの別のビューに移動したいのですが、どうすればよいですか?
"href="新しいビューコントローラ""
「新しいビューコントローラ」のURLは何ですか?
それを見つける方法は??
ありがとう。
それは簡単です。HTML を作成している場合は、リンクがどのように見えるかを知っておく必要があります。その場合は、webview をロードする前にリンクをチェックするだけです。webview のデリゲートを self に設定してから、次のようにする必要があります。
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [NSString stringWithFormat:@"%@", request.URL];
if([urlString isEqualToString:@"http://www.myCustomHyperLink"])
{
[self.navigationController pushViewController:myNextViewController];
return NO;
}
return YES;
}
上記の例では、URL が次のビューを開くために必要な URL である場合、ナビゲーション コントローラーは次のビュー コントローラーをプッシュして NO を返し、Web ビューが再読み込みされないようにします。それ以外の場合、webview はページをリロードします。
if ステートメントは、必要に応じて変更できます。
これを次のようなアプリケーションで使用します。
ビューに複数のリンクがあります。そのため、リンクが自分のものである場合は、2 番目のビュー コントローラーで開きます。それ以外の場合は、Safari を開きます。これは、アプリケーションをブラウザーに変えたくないためです。だから私は次のようなものを持っています:
if([urlString rangeOfString:@"www.myDomain.com"].location == NSNotFound)
{
[[UIApplication sharedApplication] openURL:request.Url];
}
else
...push the next view controller how I showed you above.
ビュー コントローラーに使用するアドレスはありませんが、アンカーのクリックをキャプチャするイベントを追加できます。
これは例です:
HTML ファイル内:
<a href="#HELLO">Hello World</a>
あなたの.mファイル(xCode)で:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{
NSURL * URL = [request URL];
if ([URL rangeOfString:@"#HELLO"].location != NSNotFound) {
// Do whatever you want here.
}
return YES;
}
shouldStartLoadWithRequest は、webview の場所が変更されるたびにアクティブになります。アンカーをクリックすると、場所は次のようになります: file.html#HELLO