在iPhone上的“照片”应用中,当您选择“邮件共享”选项时,照片会动画显示为向上滑动的模式视图控制器。如何修改内置UIActivities的行为?例如,我希望能够设置邮件编辑器的主题字段。
答案 0 :(得分:15)
不幸的是,自定义UIActivityViewController
邮件编辑器的主题字段尚未生效。
有关于尝试自定义此处讨论的文档和报告的错误:
iphone - How do I set recipients for UIActivityViewController in iOS 6?
如果这样做,根据文档,您将能够自定义这些邮件编辑器字段:
<强> UIActivityTypeMail 强>: 该对象将提供的内容发布到新的电子邮件消息。什么时候 使用此服务,您可以提供NSString和UIImage对象 NSURL对象将本地文件指向活动项的数据。 您还可以指定其内容使用mailto的NSURL对象 方案
因此,使用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
,那么这里有一个很好的示例项目:
答案 1 :(得分:4)
我就是这样做的,它在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];