Обычно, когда вы хотите открыть ссылку в Safar i, вы делаете это -
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://www.google.co.uk"]];
Но поскольку вы находитесь в UIWebView
, вы не можете этого сделать.
Итак, для этого вам нужно реализовать shouldStartLoadWithRequest
делегат UIWebView
.При каждом нажатии на ссылку в UIWebView
вызывается этот делегат.Теперь вы можете решить, что вы хотите.В этом случае вы хотите открыть эту ссылку в Safari.Таким образом, код выглядит следующим образом:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *requestURL =[[ request URL ] retain];
if (([[ requestURL scheme ] isEqualToString: @"http" ] ||
[[ requestURL scheme ] isEqualToString: @"https" ] ||
[[ requestURL scheme ] isEqualToString: @"mailto" ])
&& ( navigationType == UIWebViewNavigationTypeLinkClicked ) )
{
return ![[ UIApplication sharedApplication] openURL: [requestURL autorelease]];
}
[requestURL release];
return YES;
}
Таким образом, приведенный выше код открывается при каждом открытии http://, https://, and mailto://
URL-адреса во внешних приложениях Safari или Mail.
Также для выбора только URL-адресовзапустив Safari, вы можете изменить их схему с http: // на safari://
или что-то подобное, и отправлять только эти URL-адреса в систему (после замены пользовательской схемы URL-адреса на http://
).
Iсделайте это в моей внутренней справочной документации, которая представляет собой HTML, отображаемый в UIWebView, чтобы я не столкнулся с проблемами в процессе обзора, когда в мое приложение встроен веб-браузер общего назначения.