Update: Here is a complex solution. It seems that only "Message" doesn't work, so I use two activity objects to work around.
You should create two classes which conform to UIActivityItemSource
protocol. I'm not familiar with Swift
so they are implemented with Objective-C, I believe you can understand.
1 ActivityObject
class
@interface ActivityObject : NSObject
@end
@implementation ActivityObject
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"some Text";
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:@"com.apple.UIKit.activity.Message"]) {
return @"Some text\nhttp://stackoverflow.com/";
} else {
return @"Some text";
}
}
@end
2 ActivityObjectURL
class
@interface ActivityObjectURL : NSObject
@end
@implementation ActivityObjectURL
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"";
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:@"com.apple.UIKit.activity.Message"]) {
return @"";
} else {
return [NSURL URLWithString:@"http://stackoverflow.com"];
}
}
@end
Then use them like this.
ActivityObject *o = [[ActivityObject alloc] init];
ActivityObjectURL *ol = [[ActivityObjectURL alloc] init];
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:@[o, ol] applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
@dsiddhpura's solution will add a odd line break in Mail app.
