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,

Другие вопросы по тегам