Можно ли отформатировать URL-адрес для запуска Safari из UIWebView моего приложения? - PullRequest
2 голосов
/ 22 декабря 2010

Мое приложение имеет UIWebView, который показывает изрядное количество контента.Для некоторых из этого контента я хотел бы выйти из приложения и запустить Safari для обработки веб-контента, а не делать это в моем UIWebView.Существует ли формат URL, который будет явно запускать Safari вместо загрузки страницы в UIWebView?

Очевидно, что я не могу использовать http: //, поскольку он просто открывает URL-адрес на месте.Могу ли я использовать safari: // или что-то в этом роде?

РЕДАКТИРОВАТЬ: Извинения, я не был ясно, изначально.Я ищу решение, которое включает изменение URL-адресов на страницах без внесения изменений в мой клиент.Надеясь на собственный шаблон запуска Safari по телефону: // для телефона.

1 Ответ

5 голосов
/ 22 декабря 2010

Конечно.Тогда просто попросите делегата UIWebView сделать:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  NSString * customScheme = @"safari";

  NSURL * loadURL = [request URL];  //this is the url the user tapped
  if ([[loadURL scheme] isEqual:customScheme]) {
    //if the url starts with "safari://"
    NSString * absoluteURL = [loadURL absoluteString];
    //replace "safari" with "https"
    absoluteURL = [absoluteURL stringByReplacingCharactersInRange:NSMakeRange(0,[customScheme length]) withString:@"https"];
    NSURL * openURL = [NSURL URLWithString:absoluteURL];
    //open the URL in MobileSafari
    [[UIApplication sharedApplication] openURL:openURL];
    //tell your UIWebView to ignore this request
    return NO;
  } else {
    //this is not a safari:// url, so handle it normally
    return YES;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...