【问题标题】:UITextView intercept mailto linksUITextView 拦截 mailto 链接
【发布时间】:2012-10-25 16:00:29
【问题描述】:

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

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

我也尝试过覆盖 UIApplication.canShowURL 但它从未被调用过,即使是 http: 链接也不行。我尝试过子类化和“Swizzling”,都给出了相同的结果。

【问题讨论】:

标签: ios cocoa uitextview


【解决方案1】:

根据我在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 方案。转换示例:

example@sample.com -> myapp://example@sample.com

mailto:example@sample.com -> myapp://example@sample.com

这并不理想,因为由于转换,它使文本更难阅读(对于 mailto: URL 而言不是如此,而是对于文本中的纯电子邮件地址而言),但这是我能找到的最好的转到 UIWebView。

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

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

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    相关资源
    最近更新 更多