4

UIActionSheetではなくUIActivityViewControllerを使用するようにアプリを移動しようとしているので、テキストボタンではなく派手なグラフィカル共有ボタンを取得できます。(私のアプリはiOS 6のみを対象としています。)

数晩それを使って作業しようとした後、私はそれを使用する方法を完全に誤解しているようです、またはAppleによる現在の実装はひどいです:

  • サービスごとに異なるメッセージを指定することはできません。メール、Facebook、メッセージ、Twitterなど、さまざまな機能を備えたものが必要な場合、Twitterで機能するには、最大140文字である必要があります。アクティビティの種類ごとにカスタムコンテンツを設定する方法はありますか?

  • メールメッセージの件名や受信者を設定する方法はないようです。ドキュメントを読んだところ、mailto:プロトコルを使用するNSURLでこれが可能であるように聞こえますが、私のテストでは、これらのURLはメッセージ本文に押し込まれています。件名とオプションで受信者を設定する方法は実際にありますか?

  • これらの欠点を回避し、UIActivityをサブクラス化して独自のカスタムアクティビティを実行する場合は、カスタム画像/アイコンを使用する必要があります。したがって、Appleの公式アイコンでメールアクティビティを模倣することはできません。たとえば、件名、受信者、カスタム本文などを実際に設定できる独自のカスタムアクティビティバックエンドを実装することはできません。間違っていますか。Appleのを使用する方法はありますか。サービスアイコンですが、動作をカスタマイズする機会がありますか?(私が見る唯一のコールバックは、アクティビティが完了した後に実行されるものですよね?)

私が間違っているといいのですが!

4

2 に答える 2

7

アクティビティの種類ごとにカスタムコンテンツを設定する方法はありますか?

UIActivityItemProviderはい、ロジックでメソッドをサブクラス化してオーバーライドする必要があると思います–activityViewController:itemForActivityType:(たとえば、Twitterの場合は文字列を140文字にトリムします)。
次に、このクラスのインスタンスをに渡します-[UIActivityViewController initWithActivityItems:applicationActivities:]


件名とオプションで受信者を設定する方法は実際にありますか?

そうです、mailtoスキームはこれらのフィールドを設定できるはずです。それが機能しない場合、私はこれをバグと見なします。(自分で試したわけではありませんが、確認します。)


Appleのサービスアイコンを使用する方法はありますが、動作をカスタマイズする機会はありますか?

これはできないと思います。(これらのシステムアクティビティをハックしたい場合を除きます。)

于 2013-01-31T07:47:33.883 に答える
1

UIAcitvityControllerご指摘のとおり、非常に制限されているように動作するカスタムコンポーネントを使用することをお勧めします。

これは1つの例です:https ://github.com/hjnilsson/REActivityViewController、https: //github.com/romaonthego/REActivityViewControllerからフォークして、メールの件名フィールドを設定できるようにしました。

于 2013-02-03T21:50:40.193 に答える