美文网首页
iOS实现获取系统分享面板item点击回调

iOS实现获取系统分享面板item点击回调

作者: Corbin___ | 来源:发表于2019-05-12 16:57 被阅读0次

iOS实现获取系统分享面板item点击回调

UIActivityViewController提供了completionWithItemsHandler的block属性,用于回调点击事件

@property(nullable, nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler NS_AVAILABLE_IOS(8_0); // set to nil after call

注意!这个block调用后需要置nilset to nil after call

以下方法获取item点击事件有点多余,不过可用该方法对不同的item区分处理分享的数据源

初始化UIActivityViewController对象

    UIActivityViewController *vc = [[UIActivityViewController alloc] initWithActivityItems:@[item] applicationActivities:nil];

入参的items数组就是分享的内容,比如分享链接,分享文件。当你想要拿到分享面板item的点击事件的时候,这里的入参就不能是简单的URL,Image,而是要实现UIActivityItemSource协议的对象

UIActivityItemSource


@protocol UIActivityItemSource <NSObject>

@required

/// 返回占位类型,返回分享的具体数据,这个数据不一定要准备,但是类型要一致
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController; // called to determine data type. only the class of the return type is consulted. it should match what -itemForActivityType: returns later

/// 返回对应的type准确的分享数据
- (nullable id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(nullable UIActivityType)activityType; // called to fetch data after an activity is selected. you can return nil.

@optional

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(nullable UIActivityType)activityType; // if activity supports a Subject field. iOS 7.0
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController dataTypeIdentifierForActivityType:(nullable UIActivityType)activityType; // UTI for item if it is an NSData. iOS 7.0. will be called with nil activity and then selected activity
- (nullable UIImage *)activityViewController:(UIActivityViewController *)activityViewController thumbnailImageForActivityType:(nullable UIActivityType)activityType suggestedSize:(CGSize)size; // if activity supports preview image. iOS 7.0

@end

那么我们要实现获取点击对应item的事件回调,那么我们初始化UIActivityViewController的时候,就需要传入实现UIActivityItemSource的对象,这样当我们点击对应的cell的时候,就可以在实现UIActivityItemSource的对象中的- (NSString *)activityViewController:(UIActivityViewController *)activityViewController dataTypeIdentifierForActivityType:(nullable UIActivityType)activityType;代理方法回调到点击item时机

Demo

关于UIActivityType看这个文章
https://www.cnblogs.com/iOSCain/p/5717316.html

相关文章

网友评论

      本文标题:iOS实现获取系统分享面板item点击回调

      本文链接:https://www.haomeiwen.com/subject/xpgcaqtx.html