UIWebView открывают ссылки в Safari

вам нужно сделать это так:

=QUERY('Form Responses'!A2:K, "select A,B,C,D,E,K,G where F='Yes'")
302
задан Wayne Chen 27 April 2017 в 22:24
поделиться

2 ответа

Добавьте это в делегат UIWebView:

(отредактировано для проверки типа навигации. Вы также можете передавать через file:// запросы, которые будут относительными ссылками)

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (navigationType == UIWebViewNavigationTypeLinkClicked ) {
        [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }

    return YES;
}

Версия Swift:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        if navigationType == UIWebViewNavigationType.LinkClicked {
            UIApplication.sharedApplication().openURL(request.URL!)
            return false
        }
        return true
    }

Версия Swift 3:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if navigationType == UIWebViewNavigationType.linkClicked {
        UIApplication.shared.openURL(request.url!)
        return false
    }
    return true
}

Версия Swift 4:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
    guard let url = request.url, navigationType == .linkClicked else { return true }
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
    return false
}

Обновление

Поскольку openURL был устаревшим в iOS 10:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
        if (navigationType == UIWebViewNavigationTypeLinkClicked ) {
            UIApplication *application = [UIApplication sharedApplication];
            [application openURL:[request URL] options:@{} completionHandler:nil];
            return NO;
        }

        return YES;
}
654
ответ дан 23 November 2019 в 01:25
поделиться

Примечание отклонения Приложения:

Наконец UIWbView мертво, и Apple дольше не примет его.

Apple начала посылать электронное письмо всему Владельцу приложений, кто все еще использует UIWebView:

использование API Устаревшее - Apple прекратит принимать представления приложений то использование UIWebView API.

Apple относится к Пользовательской Конфиденциальности очень серьезно, и очевидно, что они won’t позволяют небезопасный webview.

Так удаляют UIWebView из Вашего приложения как можно скорее. не используйте попытку использовать UIWebView в новом созданном приложении, и я Предпочитаю использованию WKWebView если возможный

0
ответ дан 23 November 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: