如何使用UIActivityItemProvider设置邮件主题

Yuc*_*ong 5 email objective-c ios uiactivityviewcontroller

UIActivityViewController用来通过电子邮件分享信息.我们能够发送带有正文,附件的电子邮件,没有任何问题.但是我们如何设置电子邮件的主题标题.

我注意到这个问题:如何在UIActivityViewController中设置邮件主题? 接受的解决方案是使用UIActivityItemSource以下API activityViewController:subjectForActivityType : . 但是,我们的代码不符合,UIActivityItemSource因为我们正在使用UIActivityItemProvider.

UIActivityItemSource

在那里,你想从你的应用程序的现有对象而不是创建一个单独的UIActivityItemProvider对象的一个​​提供数据您可以使用情况下,这种协议.

所以完整的问题是:

如果我使用UIActivityItemProvider而不是UIActivityItemSource,如何设置电子邮件主题?

Yuc*_*ong 6

定义自定义项目提供者:

@interface CustomProvider : UIActivityItemProvider
@end
Run Code Online (Sandbox Code Playgroud)

添加到您的实现:

@implementation CustomProvider

// Some other code ... -(id)item and etc. 

- (NSString *) activityViewController:(UIActivityViewController *)activityViewController
               subjectForActivityType:(NSString *)activityType
{
      return @"A dummy Title";
}

@end
Run Code Online (Sandbox Code Playgroud)

请注意,UIActivityItemProvider它将自动符合UIactivityItemSource协议.不同的是,您不必@requiredUIactivityItemSource协议实现这些API .


saz*_*azz 5

只需在实例化UIActivityViewController后添加以下行:

[activityController setValue:@"Your email Subject" forKey:@"subject"];
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

- (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];
}
Run Code Online (Sandbox Code Playgroud)