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”库时应用程序无法启动
在 UWP 项目的 contentView 中无法触发 TapGestureRecognizer 的“tapped”方法