CalloutAccessoryTapped - почему не открывается веб-адрес?что-то простое, я уверен - PullRequest
0 голосов
/ 05 июня 2018

Так что я играю с MKAnnotationView, и у меня есть право calloutaccessory.

Поскольку у меня есть только одна аннотация, я решил, что постараюсь сделать это как можно проще свеб-страница открывается - гугл.Однако это не так, и я не понимаю, почему.Чего мне не хватает?

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {

    if control == view.rightCalloutAccessoryView {
        let url = NSURL(string: "google.com")
        UIApplication.shared.canOpenURL(url as! URL)
    }
}

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Используйте полный URL-адрес, чтобы открыть страницу Google.Попробуйте это:

let url = URL(string: "https://www.google.com")
UIApplication.shared.openURL(url!)
0 голосов
/ 05 июня 2018

Это не canOpenURL, это используется для проверки того, что приложение может открывать URL или нет

Возвращает логическое значение, указывающее, может ли схема URL быть обработана каким-либо приложением, установленным наустройство.

Из iOS 10 * это UIApplication.shared.open(url, options: [:], completionHandler: nil), а также вы можете использовать

UIApplication.shared.openURL(url)

Согласно документации

Важно

Если ваше приложение связано с iOS 9.0 или после нее, вы должны объявить схемы URL, которые вы хотите передать этому методу.Сделайте это, добавив ключ LSApplicationQueriesSchemes в файл Info.plist вашего приложения.Если вы вызываете этот метод для схемы, не объявленной с использованием этого ключа, этот метод всегда возвращает false, независимо от того, установлено ли соответствующее приложение.Чтобы узнать больше о ключе, см. LSApplicationQueriesSchemes.

...