【问题标题】:How can I create a UITextView-based controller for showing html content如何创建基于 UITextView 的控制器来显示 html 内容
【发布时间】:2010-09-03 15:53:03
【问题描述】:

我正在尝试开发一个通过自定义 API 发送消息的电子邮件发送应用程序。问题是 UITextView 不允许显示 html 内容,并且为了正确转发/回复消息,您有时需要编辑来自先前消息的 html 内容。然而,在 iPhone 上的标准 Mail.app 中,UITextView 或他们在那里使用的任何东西都能完美地显示彩色文本和链接。我的问题是:是否有任何准备好的/半准备好的组件来重新创建这种行为,或者至少对如何做到这一点的方法有任何意见。谢谢。

编辑:MFMailComposeViewController 不适合应用程序的目的,因为它不允许控制其行为并且不允许通过自定义 API 发送消息。 Three20 的 TTMessageController 是我现在使用的,它允许自定义大多数内容,除了 - 消息正文文本视图只是 UITextView - 我不能在其中放置任何 html 内容。

【问题讨论】:

  • 我建议您将问题的标题编辑为更像“如何创建处理 HTML 内容的文本视图?”因为这确实是你问题的症结所在——你已经用 Three20 解决了邮件编写器的问题。
  • 好的,好建议,谢谢,我改名

标签: iphone objective-c iphone-sdk-3.0 ios4


【解决方案1】:

Three20 的消息控制器是最接近于相似撰写视图的。

除此之外,您实际上还有两个问题:自动检测文本中的“实时”内容(链接、电话号码等),以及呈现为任意 HTML 的文本视图。

对于前者,UITextView 上有一个 dataDetectorTypes 属性。如果您设置得当,您应该会自动检测链接、电话号码等。

但是,这不会让您成为后者。我知道没有什么简单的方法可以将 HTML 转换为 NSAttributedString,比如说,这就是我想接近它的方式,并且是一个非常酷的项目。也许其他人有这方面的资源。

【讨论】:

    【解决方案2】:

    该界面可供您使用。您可以将其用作模态视图,如下所示:

    - (void)replyAction
    {
        MFMailComposeViewController* mailController = [[MFMailComposeViewController alloc] init];
        mailController = self;
        [self presentModalViewController:mailController animated:YES];
        [mailController release];
    }
    

    您还需要在头文件中导入 MessageUI:

    #import "MessageUI/MessageUI.h"
    

    设置继承:

    YourClass <MFMailComposeViewControllerDelegate>
    

    并将 MessageUI 框架添加到您的项目中。为此,右键单击任何组(如 Resources 组)并选择 Add -> Existing Frameworks... 然后,查找 MessageUI.framework。添加它,你就完成了。

    不要忘记查看官方文档,了解您可以为 MFMailComposeViewController 设置的许多其他选项。

    【讨论】:

    • 很好的答案,除了 MFMailComposeViewController 不允许通过自定义 API 发送消息 + 我需要在视图中控制更多内容,因此 MFMailComposeViewController 作为解决方案还不够好。谢谢你的尝试:)
    • 抱歉,一开始不明白您需要对它进行更多控制。由于我无法评论其他答案,我只想添加到 quixoto 的答案,如果我没记错的话,NSAttributedString 是在 iOS 4 上引入的。因此,它可能会限制您的项目。但这似乎是这样做的方法。
    猜你喜欢
    • 2015-09-25
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多