質問

HTMLコンテンツを含む文字列を配列要素として渡すと、次のようになります。 UIActivityViewController initWithActivityItems メソッドは、選択された'share'コントローラにHTMLとして表示されませんが、代わりにHTMLソースを表示します(つまりそれを解釈するのではなく、マークアップ)。

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

私は作成する私の時間を無駄にする必要があります UIActivityItemProvider それは'activity type'に基づいてカスタムコンテンツを返しますか、または実際にはmail controllerを表示する方法はありませんか UIActivityViewController コンテンツをHTMLとして解釈するには?

役に立ちましたか?

解決

どのような活動を支援しようとしていますか?アクティビティタイプはサービスに依存しており、それらはかなりです 明確に定義された.たとえば、文字列がプレーンテキストまたはマークアップされたテキストであることをサービスが知る方法はありません。

いつでも昔ながらの方法でプレーンテキストとHTMLをペーストボードにコピーしたり、mail composerを直接呼び出したり、達成しようとしていることは何でもできます。

他のヒント

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

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

第二に UIActivityItemSource これは、適切な非HTML文字列を返します -activityViewControllerPlaceholderItem: とから -activityViewController:itemForActivityType: アクティビティがそうでない場合 UIActivityTypeMail (および nil それがある場合)は、パズルの残りの部分です。

私は1つのオブジェクトに両方の仕事をさせることをお勧めします UIActivity engineは、プレースホルダー項目がHTMLであるかどうかに基づいて異なる決定を行う権利があります。

私はこれらのいずれも試していませんが、私がuiactivityviewcontrollerに慣れていたとき、彼らはあなたの目標にとって合理的であるように見えました。

1)HTMLソースをローカルファイルに書き込むことができます。, my_mail_message.html, を構築し、 NSURL そのファイルを持つオブジェクト、例えば, [NSURL URLWithString:@"file://my_mail_message.html"], 、そしてそれを使用します NSURL の要素としてのオブジェクト activityItems あなたが供給する配列 initWithActivityItems:applicationActivities:.

2)目的の受信者を知っている場合、例えば, foo@example.com, 、あなたはおそらく構築することができます NSURL を持つオブジェクト mailto schemeとHTMLソースとして body, 、そうのように: mailto:foo@example.com?body={my HTML source goes here}.中括弧は省略する必要があります {}.前と同じように、それを使用する必要があります NSURL の要素としてのオブジェクト activityItems 配列。

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

HTML文字列の最初の行がタグであることを確認するだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top