2012-11-05 103 views
1

我发现了几个地方展示了如何继承UIApplication.openURL,当用户点击UITextView中的超链接时调用这些地方。但是,我发现当他们点击一个mailto链接时,这不会被调用,我只需要重写mailto链接。我的应用程序包含一个电子邮件客户端,由于Apple不允许我将我的应用程序设置为“默认”电子邮件客户端,我至少需要在自己的程序中使用我的应用程序发送电子邮件。UITextView拦截邮件链接

我第一次尝试使用UIWebView代替,它确实允许我这样做,但是这有一些显示问题(我只是显示纯文本,它不像UITextView那么好看)。

我也尝试覆盖UIApplication.canShowURL,但它永远不会被调用,即使对于http:links也不会。我已经尝试了子类化,并且“Swizzling”,都给出了相同的结果。

+0

您可以查看以下解决方案:http://stackoverflow.com/questions/4403992/possible-to-handle-your-own-http-url-schemes-in-ios – kineticfocus

回答

2

基于信息我发现这里Possible to handle your own http URL schemes in iOS?,由kineticfocus的评论,我结束了:

注册自定义URL方案http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

在UITextView中显示我的文本之前,请查找每个有效的电子邮件地址和mailto:URL并将其转换为我的自定义URL方案。实施例的转换:

[email protected] - >的myapp://[email protected]

的mailto:[email protected] - >的myapp://[email protected]

这是不理想的,因为它使得文本由于转换而变得更难阅读(对于mailto:URL而言不是那么多,而是对于文本中的普通电子邮件地址),但是在没有转到UIWebView的情况下是最好的选择。

让我印象深刻的是,UITextView支持自定义URL方案 - 在Windows世界中,我一直希望RICHEDIT窗口类将支持,但事实并非如此。

只发布这个作为答案,而不是报告我的问题作为一个重复,因为我发现大多数其他一切都与UITextView无关,他们要么使用UIWebView,要么只是想从另一个应用程序或网站调用他们的应用程序。