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. Androidがデフォルトのダイアログテーマをオーバーライドします
- 6. JavaFXのテキストフィールド - キーまでにリリースされたのデフォルトの動作をオーバーライドします
- 7. ケーキのPHPのデフォルトの動作は動作しません。
- 8. ブラウザのフォームに焦点を当てるために、デフォルトのタブ動作をオーバーライドします。
- 9. デフォルトのルートが動作しません
- 10. Matplotlib:デフォルトのスタイルプロパティ "ggplot"をオーバーライド
- 11. デフォルトのjqueryの即値の幅をオーバーライドします
- 12. FlamingoのJCommandButtonのデフォルトの前景色をオーバーライドします
- 13. Entity Frameworkのオーバーライド動作
- 14. JButtonのpaintComponent()をオーバーライドすると動作しませんJava
- 15. ComboBoxのデフォルトのTextBlockスタイルをオーバーライドします。
- 16. jbossサーバーのデフォルトのJacksonプロバイダをオーバーライドします。
- 17. JScrollPaneの動作をオーバーライドする
- 18. デフォルトの動作が
- 19. SoapUIには、単一のテストケースのWSDL必須フィールドのデフォルト動作をオーバーライドする方法がありますか?
- 20. Javascriptのデフォルト関数をオーバーライドしますか?
- 21. jstreeのクリック時のデフォルトの動作を変更します。
- 22. Rubyのデフォルトの文字列補間動作をメソッドでオーバーライドする方法はありますか?
- 23. SpringフレームワークとデフォルトBeanのオーバーライド
- 24. javascriptフォーム - ajaxのデフォルトの動作をバイパスします
- 25. デフォルトのelement.stylesをオーバーライドする方法
- 26. デフォルトの書式プロバイダをオーバーライドする
- 27. リストスタイルのCSSオーバーライドをデフォルトに戻す
- 28. php-interbaseのデフォルトのトランザクション動作を変更しました
- 29. ASP.NETツリービューコントロールのデフォルトの動作
- 30. モンゴイドデフォルトスコープはデフォルト値をオーバーライドします。どうして?
感謝をsをリンクに使用します。あなたが望むように動作しないMailやその他のものについては、あなたが望むことをするカスタムUIActivitySourceを作成することが可能だと思います。この場合、UIActivityMailを除外して、件名フィールドなどに入力するカスタムアクティビティを作成します。 – n13