Проблема с решением wedo заключается в том, что все ваши ссылки будут открываться в Safari.
Два решения:
1 - обратный вызов JavaScript для Objective-Cкогда цель = "_ пусто" Чтобы решить вашу проблему, вам нужно добавить некоторые javascript во все ваши ссылки, проверить, имеют ли они атрибут _blank, затем перезвонить ваш код Objective-C из JavaScript и запустить:
[[UIApplication sharedApplication] openURL:myUrl];
Лично я ненравится это решение, потому что это много кода, обратный вызов, сложность и немного сложнее ...
2 - Проверка параметра URL Если у вас есть доступ к коду HTML (обратите внимание, что в обоих решениях вам нужен доступ к HTML), я рекомендую удалить target = "_ blank" и добавить параметр? OpenInSafari = true
В UIWebViewDelegate добавьте следующий код:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSURL *url = [request URL];
NSDictionary *param = [url queryParameters];
NSString *openIsSafari = [param objectForKey:@"openInSafari"];
if ( openIsSafari!= nil && ([openIsSafari isEqualToString:@"true"] || [openIsSafari isEqualToString:@"1"])){
[[UIApplication sharedApplication] openURL:url];
return NO;
}
}
return YES;
}
Хороший (плохой?) Смысл этого решения заключается в том, что если ссылка на более глубоких уровнях все еще может открывать ссылки в браузере Safari
<a href="http://www.google.com?openInSafari=true">Google in Safari</a>
Всегда добавляйте протокол в URL (http, https ...)