16

HTMLコンテンツを配列要素として含む文字列をUIActivityViewController initWithActivityItemsメソッドに渡すと、選択した「共有」コントローラーではHTMLとして表示されず、代わりにHTMLソース(つまり、解釈ではなくマークアップ)が表示されます。

また、htmlコンテンツをサポートしない共有ターゲットに対してこれを行う理由は理解できますが、電子メールなどの場合も解釈しません(以前はisHTMLプロパティをYESに設定することでこれを行いますMFMailComposeController)。

UIActivityItemProvider'アクティビティタイプ'に基づいてカスタムコンテンツを返すを作成するのに時間を無駄にする必要がありUIActivityViewControllerますか、それともコンテンツをHTMLとして解釈するためにによって提示されるメールコントローラーを取得する方法は本当にありませんか?

4

4 に答える 4

54

私のテストでは、文字列が「<html><body>」で始まり「</body> </ html>」で終わる場合、HTMLとして扱われます。

HTMLに対応していない共有サービスで良好な結果が必要な場合は、代わりにUIActivityItemSourceプロトコルを実装し、アクティビティがそうである場合とそうでない場合にfrom-activityViewControllerPlaceholderItem:とfromのときにHTML文字列を返すオブジェクトを使用する必要があります。-activityViewController:itemForActivityType:UIActivityTypeMailnil

アクティビティがない場合(およびアクティビティがある場合)に適切な非HTML文字列を返す2番目のUIActivityItemSourceは、パズルの残りの部分です。-activityViewControllerPlaceholderItem:-activityViewController:itemForActivityType:UIActivityTypeMailnil

UIActivityエンジンは、プレースホルダーアイテムがHTMLであるかどうかに基づいて異なる決定を行う権利があるため、1つのオブジェクトに両方のジョブを実行させることはお勧めしません。

于 2012-11-06T14:50:07.113 に答える
1

どのような活動を支援したいと考えていますか?アクティビティタイプはサービスに依存しており、かなり明確に定義されています。たとえば、文字列がプレーンテキストまたはマークアップされたテキストであることをサービスが認識する方法はありません。意図的にHTMLコードを貼り付けることができます。

いつでも昔ながらの方法で、プレーンテキストとHTMLをペーストボードにコピーしたり、メールコンポーザーに直接電話したり、その他の目的を達成したりすることができます。

于 2012-09-30T03:24:02.860 に答える
1

私はこれらのどれも試していませんが、UIActivityViewControllerに慣れてきたとき、それらはあなたの目標にとって妥当であるように見えました。

1)HTMLソースをローカルファイル(例:)に書き込み、そのファイル(例:)を使用してオブジェクトをmy_mail_message.html作成し、そのオブジェクトをフィード先の配列の要素として使用できます。NSURL[NSURL URLWithString:@"file://my_mail_message.html"]NSURLactivityItemsinitWithActivityItems:applicationActivities:

2)目的の受信者がわかっている場合、たとえば、次のように、スキームとHTMLソースをとしてオブジェクトをfoo@example.com作成できます。中括弧は省略してください。前と同じように、そのオブジェクトを配列の要素として使用する必要があります。NSURLmailtobodymailto:foo@example.com?body={my HTML source goes here}{}NSURLactivityItems

これがあなたにいくつかのアイデアを与えることを願っています。

于 2012-10-09T10:02:57.217 に答える
0

HTML文字列の最初の行がタグであることを確認する必要があります。

于 2012-10-17T16:26:42.900 に答える