【发布时间】:2017-04-04 13:01:03
【问题描述】:
我一直在寻找 UIActivityViewController 以与不同类型的活动类型共享不同的字符串或图像,即打印选项、共享选项(facebook、twitter)。
但没有任何选择这样做。请指教。
谢谢!
【问题讨论】:
标签: objective-c uiactivityviewcontroller
我一直在寻找 UIActivityViewController 以与不同类型的活动类型共享不同的字符串或图像,即打印选项、共享选项(facebook、twitter)。
但没有任何选择这样做。请指教。
谢谢!
【问题讨论】:
标签: objective-c uiactivityviewcontroller
试试这个代码
-(void)shareContent{
NSString * message = @"My too cool Son";
UIImage * image = [UIImage imageNamed:@"boyOnBeach"];
NSArray * shareItems = @[message, image];
UIActivityViewController * avc = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
}
【讨论】:
您可以使用 UIActivityItemProvider 来做到这一点
在 .h 文件中
@interface APActivityProvider : UIActivityItemProvider <UIActivityItemSource>
@end
在 .m 文件中
@implementation APActivityProvider
- (id) activityViewController:(UIActivityViewController *)activityViewController
itemForActivityType:(NSString *)activityType {
if ( [activityType isEqualToString:UIActivityTypePostToFacebook] )
return @"This is a facebook post!";
if ( [activityType isEqualToString:UIActivityTypeMessage] )
return @"SMS message text";
if ( [activityType isEqualToString:UIActivityTypeMail] )
return @"Email text here!";
}
- (void) shareAppData {
APActivityProvider *ActivityProvider = [[APActivityProvider alloc] initWithPlaceholderItem: @“”];
NSArray *Items = @[ActivityProvider];
UIActivityViewController *ActivityView = [[UIActivityViewController alloc]
initWithActivityItems:Items
applicationActivities:nil];
[ActivityView setValue:@“Title for email” forKey:@"subject"];
[self presentViewController:ActivityView animated:YES completion:nil];
[ActivityView setCompletionHandler:^(NSString *act, BOOL done)
{
NSString *ServiceMsg = nil;
if ( [act isEqualToString:UIActivityTypeMail] )
ServiceMsg = @"Mail sended!";
if ( [act isEqualToString:UIActivityTypePostToTwitter] )
ServiceMsg = @"Post on twitter, ok!";
if ( [act isEqualToString:UIActivityTypePostToFacebook] )
ServiceMsg = @"Post on facebook, ok!";
if ( [act isEqualToString:UIActivityTypeMessage] )
ServiceMsg = @"SMS sended!";
if (done)
{
UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[Alert show];
}
}];
}
【讨论】: