Чтобы расширить сказанное Рэнди, вот что я использую в своем приложении, чтобы каждый URL http://, https://, и mailto: // открывались во внешних приложениях Safari или Mail:
-(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;
}
Как говорит Рэнди, вы захотите реализовать это в любом классе, который вы задали в качестве делегата UIWebView. Чтобы запускать Safari только по выбранным URL-адресам, вы могли бы изменить их схему с http: // на safari: // или что-то подобное, и отправлять только эти URL-адреса в систему (после замены пользовательской схемы URL-адреса на http://).
Я делаю это в своей внутренней справочной документации, которая представляет собой HTML, отображаемый в UIWebView, так что я не сталкиваюсь с проблемами в процессе обзора, когда в мое приложение встроен веб-браузер общего назначения.