Apple Docs说,您可以使用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";
}
}

最佳答案

是的,此委托方法对我有用,并调用了委托方法。我使用以下代码创建 Activity 项目控制器:

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

关于ios - IOS/Objective-C:UIActivityItemSource协议(protocol),用于使用UIActivityViewController自定义共享消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49012660/

10-14 23:27