Недавнее обновление 12.2 остановило работу некоторых функций в нашем WebView, как ни странно, только на реальных устройствах - оно отлично работает в симуляторах. При щелчке ссылки в веб-просмотре некоторый код определяет, должна ли ссылка открываться в веб-обзоре или открывать новое окно браузера. Ссылки являются стандартными ссылками href с target="_blank"
. Код для определения, открывать ли новое окно браузера или нет, выглядит следующим образом:
#pragma UIWebView delegate
- (BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
{
BOOL shouldOpenBrowser = NO;
if ((inRequest.URL.absoluteString.length > 0) && (![inRequest.URL.absoluteString isEqualToString:@"about:blank"])) {
self.strUrl = [NSString stringWithFormat:@"%@", [inRequest URL]];
if ([inRequest.URL.absoluteString containsString:@"google.com/recaptcha"]) {
shouldOpenBrowser = NO;
} else if (![inRequest.URL.host hasSuffix:@"mywebviewdomain.com"]) {
shouldOpenBrowser = YES;
} else {
NSString *strMatchedUrl = [NSString stringWithFormat:@"https://mywebviewdomain.com/link/%@/%@/%@",self.var1, self.var2,self.var3];
if (![inRequest.URL.absoluteString containsString:strMatchedUrl]) {
shouldOpenBrowser = NO;
} else {
shouldOpenBrowser = YES;
}
}
}else if([inRequest.URL.absoluteString hasPrefix:@"newtab:"])
{
NSURL *url = [NSURL URLWithString:[inRequest.URL.absoluteString substringFromIndex:7]];
[[UIApplication sharedApplication] openURL:url];
return true;
}
if (shouldOpenBrowser == YES) {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
return YES;
}
Как видите, все ссылки, которые не ведут на mywebviewdomain.com
, должны открывать новое окно браузера. На реальных устройствах ничего не происходит при нажатии на ссылки. Отлично работает в симуляторах iOS 12.2.
В чем здесь проблема? И есть ли какое-нибудь решение, которое я могу сделать на веб-странице, чтобы избежать необходимости обновлять приложение?