1

我发现几个地方展示了如何子类化 UIApplication.openURL,当用户点击 UITextView 中的超链接时调用它。但是,我发现当他们点击 mailto 链接时不会调用它,我只需要覆盖 mailto 链接。我的应用程序包含一个电子邮件客户端,并且由于 Apple 不允许我将我的应用程序设置为“默认”电子邮件客户端,我至少希望我自己的程序中的 mailto 链接可以使用我的应用程序发送电子邮件。

我首先尝试使用 UIWebView 代替,它确实允许我这样做,但是有一些显示问题(我只是显示纯文本,它看起来/工作不如 UITextView 好)。

我也尝试过覆盖 UIApplication.canShowURL 但它从未被调用,甚至对于 http: 链接也没有。我尝试过子类化和“Swizzling”,两者都给出相同的结果。

4

1 回答 1

2

根据我在此处找到的信息可以在 iOS 中处理您自己的 http URL 方案吗?,从动力学焦点的评论中,我最终得到:

注册自定义 URL 方案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 而言不是如此,而是对于文本中的纯电子邮件地址而言),但这是我能找到的最好的,无需去UIWeb 视图。

UITextView 支持自定义 URL 方案给我留下了深刻的印象——在 Windows 世界中,我一直希望 RICHEDIT 窗口类能够支持它,但事实并非如此。

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

于 2012-11-08T21:44:29.303 回答