iPhoneのPhotosアプリケーションで、[メール共有]オプションを選択すると、写真がスライドするモーダルビューコントローラにアニメーション表示されます。組み込みUIActivitiesの動作をどのように変更することが可能ですか?たとえば、私はメール作成者の件名フィールドを設定できるようにしたいと思います。UIActivityViewControllerのデフォルトの動作をオーバーライドします
答えて
メールコンシューマUIActivityViewController
の件名フィールドをカスタマイズする作業はまだ完了していません。
カスタマイズしようとしているに関する文書化され、報告されたバグがあり、このここで説明:この場合は働いていた
iphone - How do I set recipients for UIActivityViewController in iOS 6?
、マニュアルに従って、あなたはこれらのメールの作曲をカスタマイズすることができるだろうフィールド:
UIActivityTypeMail: オブジェクト提供されたコンテンツを新しい電子メールメッセージに投稿します。 このサービスを使用すると、NSStringおよびUIImageオブジェクトと、アクティビティ項目のデータとしてローカルファイルを指す NSURLオブジェクトを指定できます。 また、内容がmailto スキームを使用するNSURLオブジェクトを指定することもできます。あなたは
UIActivityViewController
をカスタマイズする他の方法を探している場合NSString *text = @"My mail text"; NSURL *recipients = [NSURL URLWithString:@"mailto:[email protected]?subject=Here-is-a-Subject"]; NSArray *activityItems = @[text, recipients]; UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; [self presentViewController:activityController animated:YES completion:nil];
:だからのmailtoスキーム、それはに働いているとき、あなたはこのようなこれらのフィールドをカスタマイズすることができるはずを使用して
優れたサンプルプロジェクトがここにあります:
UIActivityItemSourceプロトコルに準拠したクラスを作成これは私がそれをしなかったかであり、それはiOSの7
に私のために働いています:
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return @"";
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypeMail])
{
return @"Subject"
}
return nil;
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypeMail])
{
return @"body";
}
return nil;
}
:関連するメソッドをオーバーライドする実装では
@interface CustomActivityItem : NSObject <UIActivityItemSource>
@end
を
そしてアクティビティビューコントローラ提示:
CustomActivityItem* activityItem = [[CustomActivityItem alloc] init];
UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[activityItem]
applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
この方法はiOS9では機能しません。ここで「init」が明示的に使用不可にマークされているというエラーが表示されます。 – DenVog
私はまだXcodeバージョン7.0.1(7A1001)でコンパイルするiOS 9でこのアプローチを使用していますが、うまくいきます。正確なエラーは何ですか? – pedrobolanos
これは受信者を追加しますか? – mKane
- 1. AutoCompleteTextViewのBackspaceのデフォルトの動作をオーバーライドします。
- 2. JavaScript(ja)のリンク( 'a')オブジェクトのデフォルトの動作をオーバーライドします
- 3. OS 6のデフォルトのスクロール動作をオーバーライドする方法
- 4. JComboBoxのデフォルトの色をオーバーライドします
- 5. Laravel 5.2デフォルトの動作をオーバーライドするリソースルーティング
- 6. Androidがデフォルトのダイアログテーマをオーバーライドします
- 7. UIActivityViewControllerがiPadで動作していませんか?
- 8. JavaFXのテキストフィールド - キーまでにリリースされたのデフォルトの動作をオーバーライドします
- 9. ブラウザのフォームに焦点を当てるために、デフォルトのタブ動作をオーバーライドします。
- 10. オブジェクトのtuple()動作のオーバーライド
- 11. ケーキのPHPのデフォルトの動作は動作しません。
- 12. メディアクエリがデフォルトのCSSをオーバーライド
- 13. Matplotlib:デフォルトのスタイルプロパティ "ggplot"をオーバーライド
- 14. SBTでデフォルトのコンパイルタスクをオーバーライド
- 15. Django-Registration:デフォルトのフィールドをオーバーライド
- 16. メッセージボックスをオーバーライドし、デフォルトのボタンにアイコンを追加します
- 17. デフォルトのjqueryの即値の幅をオーバーライドします
- 18. FlamingoのJCommandButtonのデフォルトの前景色をオーバーライドします
- 19. デフォルトのルートが動作しません
- 20. Entity Frameworkのオーバーライド動作
- 21. ndbプロパティのデフォルトの_get_for_dict()をオーバーライドします。
- 22. jbossサーバーのデフォルトのJacksonプロバイダをオーバーライドします。
- 23. pdfHtmlでItext 7のデフォルトの余白をオーバーライドします
- 24. NHibernateのデフォルトのCount Queryable拡張メソッドをオーバーライドします。
- 25. ComboBoxのデフォルトのTextBlockスタイルをオーバーライドします。
- 26. ng-disabledがカスタム指示の動作をオーバーライドします
- 27. JButtonのpaintComponent()をオーバーライドすると動作しませんJava
- 28. SoapUIには、単一のテストケースのWSDL必須フィールドのデフォルト動作をオーバーライドする方法がありますか?
- 29. JScrollPaneの動作をオーバーライドする
- 30. Springでデフォルトのオーバーライド可能なコンポーネントを作成するには?
感謝をsをリンクに使用します。あなたが望むように動作しないMailやその他のものについては、あなたが望むことをするカスタムUIActivitySourceを作成することが可能だと思います。この場合、UIActivityMailを除外して、件名フィールドなどに入力するカスタムアクティビティを作成します。 – n13