У меня есть небольшое приложение для iOS, которое использует WebView. Мне нужны ссылки, содержащие target = "_blank", чтобы открывать их в Safari
Я нашел решение. Но у меня это не работает.
https://stackoverflow.com/a/15048074/4489534
Все ссылки теперь открываются в Safari, и все ссылки, содержащие "? openInSafari = true", тоже. Но внешние (загружаемые) файлы, такие как PDF, открываются в WebView.
Я не могу понять, почему условие не работает
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType: (UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSURL *url = [request URL];
NSString *string = [url query];
if ([string rangeOfString: @"openInSafari=true"].location != NSNotFound){
[[UIApplication sharedApplication] openURL: url];
NSLog(@"Open in Safari");
return NO;
}
}
NSLog(@"Open in WebView");
return YES;
}
РЕДАКТИРОВАТЬ
Когда я нажимаю ссылку, содержащую "? openInSafari = true", я получаю "Открыть в Safari openInSafari = true"
Когда я нажимаю на обычную ссылку, я получаю «Открыть в Safari (null)»
Когда я нажимаю ссылку для загрузки на файл PDF, я получаю "Открыть в WebView product_id = 50 & download_id = 21"
Когда я нажимаю на прямую ссылку на файл PDF, я получаю «Открыть в Safari (null)»
if ([string rangeOfString: @ "openInSafari = true"]. location! = NSNotFound) замените этот код этим if (string.lenght> 0)
Оно работает. Но мне это решение не подходит. У меня есть ссылки типа index.php? route = аккаунт / адрес / добавить, и эти ссылки открываются в Safari
@SurbhiGarg Я обновил свой вопрос
поэтому вам нужно поставить отдельное условие для внешних ссылок, потому что они будут иметь download_id
Я нашел для себя решение. Я использую [строка containsString: @ "openInSafari = true"] вместо [строка rangeOfString: @ "openInSafari = true"]. location! = NSNotFound. Работает отлично, но containsString можно использовать только для iOS 8 и новее





Расскажите, пожалуйста, какую строку вы получаете при нажатии на ссылку pdf.