Kri*_*lci 17 ios uiactivityviewcontroller ios9
我通过共享来自其他应用程序的内容看到,当使用共享表共享到Gmail邮件应用程序时,可以设置不同的主题和正文.我已经实现了它,它在本机邮件应用程序上工作正常但不适用于Gmail.
进入Yelp并分享业务然后从共享表中选择gmail,我发现主题和正文是不同的.主题包含业务的地址,而正文包含地址+ Yelp上的业务链接.
我试图在本机邮件应用程序上成功复制此逻辑但不在Gmail应用程序中复制.
我尝试过以下方法:
实现UIActivityItemSource方法
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"";
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
return @"body";
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType {
return @"subject";
}
Run Code Online (Sandbox Code Playgroud)
结果
Apple Mail主题设置为"主题",正文设置为"正文"
Gmail主题设置为"正文",正文设置为"正文"
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
Run Code Online (Sandbox Code Playgroud)
共享到Gmail应用时从不调用.
然后我尝试更多的黑客方式
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"body"] applicationActivities:nil];
[activityViewController setValue:@"subject" forKey:@"subject"];
Run Code Online (Sandbox Code Playgroud)
结果
Apple Mail主题设置为"主题",正文设置为"正文"
Gmail主题设置为"正文",正文设置为"正文"
任何让Gmail表现得像Apple Mail的方式?
我再次看到,Yelp和Safari等其他应用程序通过共享表从Gmail应用程序中获得了正确的行为.任何建议将不胜感激,谢谢.
小智 -3
[_activityViewController setValue:subject forKey:@"subject"];- 不支持的方式。
设置正文和主题的正确方法(iOS 7.0 及更高版本) -UIActivityItemSource在要共享的项目上实施协议。
// EmailDataProvider.h
@interface EmailItemProvider : NSObject <UIActivityItemSource>
@property (nonatomic, strong) NSString *subject;
@property (nonatomic, strong) NSString *body;
@end
// EmailDataProvider.m
@implementation EmailDataProvider
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return _body;
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
return _body;
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType {
return _subject;
}
@end
Run Code Online (Sandbox Code Playgroud)
然后呈现它:
EmailDataProvider *emailItem = [[EmailDataProvider alloc]init];
emailItem.subject = @"This is Subject text.";
emailItem.body = @"This is Body,set by programatically";
UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:@[emailItem]
applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2011 次 |
| 最近记录: |