Callout Accessory Tapped - 为啥网址打不开?一些简单的事情我敢肯定

Posted

技术标签:

【中文标题】Callout Accessory Tapped - 为啥网址打不开?一些简单的事情我敢肯定【英文标题】:CalloutAccessoryTapped - Why won't a web address open? something simple im sureCallout Accessory Tapped - 为什么网址打不开?一些简单的事情我敢肯定 【发布时间】:2018-06-05 04:17:02 【问题描述】:

所以我在玩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)
    

【问题讨论】:

【参考方案1】:

使用完整的网址打开谷歌页面。试试这个:

let url = URL(string: "https://www.google.com")
UIApplication.shared.openURL(url!)

【讨论】:

【参考方案2】:

它不是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。

【讨论】:

虽然我的错误(谢谢你的发现),即使我有一个打印语句,它也不会出现在控制台中,这意味着代码没有运行。想法? @jonpeter 大哥不客气,别忘了加LSApplicationQueriesSchemes,不然你的canOpenURL会一直返回false,有帮助的可以采纳

以上是关于Callout Accessory Tapped - 为啥网址打不开?一些简单的事情我敢肯定的主要内容,如果未能解决你的问题,请参考以下文章

使用“com.android.future.usb.accessory”库时应用程序无法启动

USB Accessory 模式

在 UWP 项目的 contentView 中无法触发 TapGestureRecognizer 的“tapped”方法

微信小程序 keyboard-accessory组件

MySQL Workbench - 外键选项卡不起作用

滚动视图中 Tapped imageview 的 Contentoffset