Если Вы установили UIWebViewDelegate
вы можете использовать метод
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
Используя этот метод, мы можем заблокировать или разрешить некоторые ссылки/URLы будет открыт в либо UIWebView
, либо в мобильном браузере.
Таким образом, мы можем сделать что-то вроде
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// We only want to block links
if(navigationType == UIWebViewNavigationTypeLinkClicked) {
NSString *url = [[request URL] absoluteString];
if([url isEqualToString:@"http://www.google.co.uk"]) {
// If the requested url is a link and is http://www.google.co.uk block it from loading in the UIWebView and load it in the mobile browser.
if([[UIApplication sharedApplication] canOpenUrl:[request URL]]) {
// We should be checking to make sure we can open it first, for whatever reason we might not be able to and we don't want to give the user a bad journey.
[[UIApplication sharedApplication] openURL:[request URL]];
// We also need to tell our UIWebView not to do anything so we need to return NO.
return NO;
}
}
}
// If all is OK and we are happy for any other link to be included then just return YES and continue.
return YES;
}
Если вы хотите, чтобы блокировать все ссылки, то просто удалите isEqualToString:
if statement
или вы можете просто блокировать определенные ссылки, добавляя else if
к if statement
. Этот код делает одну из двух вещей: он либо загрузит сайт с щелчком ссылки в UIWebView
, либо загрузит сайт в мобильном браузере, если он пройдет if statements
.
UPDATE
Оказывается, пользователь не делает objective-c
стороны вещей, которые они делают html
, который не был в оригинальном вопросе, но так как это может помочь пользователям в будущем я буду оставьте мой ответ здесь.
EDIT
Поскольку пользователь использует html
, чтобы попытаться направить пользователя в мобильном браузере, что они ищут называется URL схем. К сожалению, я не верю, что есть какая-либо схема URL-адреса от iOS 7
, которая откроет браузер для браузера Safari. Этот вопрос был задан раньше, поэтому я не собираюсь сидеть здесь и говорить все, что снова я просто направить вас на вопрос и ответ Open Mobile Safari from a Link in a WebView
Пытались ли вы что-нибудь? – Popeye
Я попытался добавить target = "_ blank" в ссылку, но это не помогло. – Orange
Нет, ничего не сделаешь с 'UIWebView', вы пробовали какие-либо ответы? Вам нужно перехватить щелчок в 'shouldStartLoadWithRequest:' и вернуть НЕТ, чтобы 'UIWebView' не загружался, но перед возвратом НЕТ вам нужно будет делать то, что вы хотите сделать. – Popeye