UIActivityViewController with HTML

后端 未结 4 1058
一生所求
一生所求 2021-02-01 22:16

When I pass a string containing HTML content as an array element to the UIActivityViewController initWithActivityItems method it doesn\'t present it as HTML in the

相关标签:
4条回答
  • 2021-02-01 22:50

    You just need to make sure the first line of the HTML string is an tag.

    0 讨论(0)
  • 2021-02-01 22:56

    What activities are you looking to support? Activity types are dependent on the service, and they're pretty clearly defined. There's no way for services to know that a string is a plain text or marked-up text, for example--you might want to paste HTML code on purpose.

    You can always do things the old-fashioned way and copy plain text and HTML to the pasteboard, or call the mail composer directly, or whatever you're trying to accomplish.

    0 讨论(0)
  • 2021-02-01 23:05

    I haven't tried any of these, but they seemed reasonable for your goal when I was getting myself familiar with UIActivityViewController.

    1) You could write the HTML source to a local file, e.g., my_mail_message.html, then build an NSURL object with that file, e.g., [NSURL URLWithString:@"file://my_mail_message.html"], and then use that NSURL object as an element of the activityItems array that you feed to initWithActivityItems:applicationActivities:.

    2) If you know the intended recipient, e.g., foo@example.com, you could possibly build an NSURL object with the mailto scheme and the HTML source as the body, like so: mailto:foo@example.com?body={my HTML source goes here}. You should omit the curly braces {}. As before, you should then use that NSURL object as an element of the activityItems array.

    Hope this gives you some ideas.

    0 讨论(0)
  • 2021-02-01 23:06

    In my testing if the string begins "<html><body>" and ends "</body></html>" then it is treated as HTML.

    If you want a good result with the non-HTML-aware sharing services you need to instead use an object that implements the UIActivityItemSource protocol and returns the HTML string when from -activityViewControllerPlaceholderItem: and from -activityViewController:itemForActivityType: if the activity is UIActivityTypeMail and nil otherwise.

    A second UIActivityItemSource that returns a suitable non-HTML string from -activityViewControllerPlaceholderItem: and from -activityViewController:itemForActivityType: if the activity is not UIActivityTypeMail (and nil if it is) is the rest of the puzzle.

    I recommend against having one object do both jobs, as the UIActivity engine is entitled to make different decisions based on whether the placeholder item appears to be HTML or not.

    0 讨论(0)
提交回复
热议问题