如何使用UIActivityItemProvider设置邮件主题
我正在使用UIActivityViewController
通过电子邮件共享信息。 我们可以发送电子邮件与正文,附件没有问题。 但是,我们如何设置电子邮件的主题标题。
我注意到这个问题: 如何在UIActivityViewController中设置邮件主题? 接受的解决scheme是使用UIActivityItemSource
与以下API activityViewController:subjectForActivityType:。 但是,我们的代码不符合UIActivityItemSource
因为我们正在使用UIActivityItemProvider
。
UIActivityItemSource
您可以在您希望从应用程序的某个现有对象提供数据的情况下使用此协议,而不是创build单独的UIActivityItemProvider对象。
所以完整的问题是:
如何使用UIActivityItemProvider
而不是UIActivityItemSource设置电子邮件主题?
定义您的自定义项目提供者:
@interface CustomProvider : UIActivityItemProvider @end
添加到您的实施:
@implementation CustomProvider // Some other code ... -(id)item and etc. - (NSString *) activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { return @"A dummy Title"; } @end
请注意, UIActivityItemProvider
将自动符合UIactivityItemSource
协议。 区别在于,您不必为UIactivityItemSource
协议实现那些@required
API。
在实例化你的UIActivityViewController之后,添加下面的代码:
[activityController setValue:@"Your email Subject" forKey:@"subject"];
我正在像这样使用它:
- (void)share { NSArray *activityItems; NSString *texttoshare = [NSString stringWithFormat:@"Hey bro! check this info.\n%@\n%@", self.infoBean.title, self.infoBean.desc]; UIImage *imagetoshare = imageView.image;//this is your image to share if (imagetoshare != nil) { activityItems = @[imagetoshare, texttoshare]; } else { activityItems = @[texttoshare]; } NSArray *exTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeSaveToCameraRoll]; UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; activityController.excludedActivityTypes = exTypes; [activityController setValue:@"Your email Subject" forKey:@"subject"]; [self presentViewController:activityController animated:YES completion:nil]; }
UIActivityItemProvider
实现UIActivityItemSource
协议。 这是在头上。
@interface UIActivityItemProvider : NSOperation <UIActivityItemSource>
所以你可以简单地使用方法- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
返回UIActivityItemProvider
子类中的主题。