IOS / Objective-C:UIActivityItemSource协议,用于使用UIActivityViewController自定义共享消息

时间:2018-02-27 15:47:20

标签: ios objective-c uiactivityitemprovider

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";
}
}

1 个答案:

答案 0 :(得分:1)

是的,这个委托方法适用于我,并调用委托方法。我使用以下代码创建活动项控制器:

var config = {
apiKey: "AIzaSyAqFmfmNWi95nt6TemvBMjPepulwV5WyZg",
authDomain: "define-web-ext.firebaseapp.com",
databaseURL: "https://define-web-ext.firebaseio.com",
projectId: "define-web-ext",
storageBucket: "",
messagingSenderId: "217235378805"
};
firebase.initializeApp(config);

其中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