IOS/Objective-C: протокол UIActivityItemSource для настройки обмена сообщениями с помощью UIActivityViewController
Документы Apple говорят, что вы можете использовать UIActivityItemSource
протокол для настройки сообщений, передаваемых UIActivityViewController
вместо UIActivityItemProvider
Объект:
UIActivityItemSource
Вы можете использовать этот протокол в ситуациях, когда вы хотите предоставить данные из одного из существующих объектов вашего приложения вместо создания отдельного объекта UIActivityItemProvider.
Я принял этот протокол, однако методы делегирования, такие как приведенный ниже, похоже, не запускаются. Может ли кто-нибудь подтвердить, что это должно сработать, и, если да, указать мне на то, чего мне не хватает? Спасибо заранее за любые предложения.
-(NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(UIActivityType)activityType
{
NSLog(@"DELEGATE METHOD CALLED");//Not logging to console
if (activityType == UIActivityTypeMessage) {
return @"My message";
} else if (activityType == UIActivityTypeMail) {
return @"My email text";
}
else {
return @"My default text";
}
}
1 ответ
Да, этот метод делегата работает для меня, и вызывается метод делегата. Я создаю контроллер элемента деятельности со следующим кодом:
NSArray *theItems = @[ self ];
UIActivityViewController *theController = [[UIActivityViewController alloc] initWithActivityItems:theItems applicationActivities:nil];
theController.popoverPresentationController.barButtonItem = self.shareButton;
theController.excludedActivityTypes = @[ UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll, UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo, UIActivityTypeAirDrop ];
[self presentViewController:theController animated:YES completion:NULL];
где self
инвентарь UIActivityItemSource
,