我发现了几个显示如何子类化UIApplication.openURL的地方,当用户点击UITextView中的超链接时调用该UIApplication.openURL。但是,我发现当他们点击mailto链接时没有调用它,我只需要覆盖mailto链接。我的应用程序包括一个电子邮件客户端,由于Apple不允许我将我的应用程序设置为“默认”电子邮件客户端,因此我至少希望在我自己的程序中使用mailto链接来使用我的应用程序发送电子邮件。
我首先尝试使用UIWebView,这确实允许我这样做,但是它有一些显示问题(我只是显示纯文本,它看起来/工作不如UITextView那样好)
我也尝试重写UIApplication.canShowURL,但它永远不会被调用,甚至不用于http:links。我已经尝试了子类化和“Swizzling”,两者都给出了相同的结果。
答案 0 :(得分:2)
基于我在Possible to handle your own http URL schemes in iOS?找到的信息,根据kineticfocus的评论,我最终得到了:
注册自定义网址计划http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html。
在UITextView中显示我的文本之前,找到每个有效的电子邮件地址和mailto:URL并转换为我的自定义URL方案。转换示例:
example@sample.com - >的myapp://example@sample.com
mailto:example@sample.com - >的myapp://example@sample.com
这并不理想,因为它会使文本因转换而难以阅读(不是对于mailto:URL而是对于文本中的普通电子邮件地址而言),但这是我能找到的最好的转到UIWebView。
UITextView支持自定义URL方案给我留下了深刻的印象 - 在Windows世界中,我一直希望RICHEDIT窗口类能支持它,但事实并非如此。
只发布此作为答案,而不是将我的问题报告为副本,因为我发现的大多数其他内容都与UITextView无关,他们要么使用UIWebView,要么只是想从其他应用或网站调用他们的应用。 / p>