在iPhone上的照片应用程序,当您选择邮件共享选项,照片动画成向上滑动模态视图控制器。 这怎么可能修改内置UIActivities的行为? 例如,我希望能够设置邮件撰写的主题领域。
Answer 1:
不幸的是,自定义的主题领域UIActivityViewController
邮件作曲家还没有成型。
有一种记录和报告关于努力定制这里讨论这个错误:
iPhone -如何设置UIActivityViewController收件人的iOS 6?
如果这样的工作,根据文档,你就可以自定义这些邮件撰写字段:
UIActivityTypeMail:对象帖提供的内容,新的电子邮件。 当使用该服务,您可以提供的NSString和UIImage的对象和NSURL对象指向本地文件作为活动项目的数据。 你也可以指定NSURL对象,其内容使用mailto模式。
因此,使用mailto模式, 在工作时 ,你应该能够定制这样的字段:
NSString *text = @"My mail text";
NSURL *recipients = [NSURL URLWithString:@"mailto:foo@bar.com?subject=Here-is-a-Subject"];
NSArray *activityItems = @[text, recipients];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
如果您寻找其他方式来定制UIActivityViewController
这里有个很好的例子项目:
https://github.com/russj/ios6ShareDemo
Answer 2:
这是我做到了,它的工作对我的iOS 7。
创建符合UIActivityItemSource协议的类:
@interface CustomActivityItem : NSObject <UIActivityItemSource>
@end
在实施覆盖相关的方法:
- (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;
}
然后呈现活动视图控制器:
CustomActivityItem* activityItem = [[CustomActivityItem alloc] init];
UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[activityItem]
applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
文章来源: Override UIActivityViewController default behaviour