在 iPhone 上的照片应用程序中,当您选择邮件共享选项时,照片会以动画方式进入向上滑动的模态视图控制器。如何修改内置 UIActivities 的行为?例如,我希望能够设置邮件撰写者的主题字段。
user376845
问问题
8052 次
2 回答
15
不幸的是,自定义UIActivityViewController
邮件编写器的主题字段还没有工作。
有一个记录和报告的关于尝试自定义这里讨论的错误:
iphone - 如何在 iOS 6 中设置 UIActivityViewController 的收件人?
如果这有效,根据文档,您将能够自定义这些邮件编写器字段:
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
这里有一个很好的示例项目:
于 2012-10-17T15:38:30.157 回答
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];
于 2014-02-12T16:45:48.847 回答