Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用多个UIActivityProvider类时不存在Twitter_Ios_Uiactivityviewcontroller_Uiactivity - Fatal编程技术网

Ios 使用多个UIActivityProvider类时不存在Twitter

Ios 使用多个UIActivityProvider类时不存在Twitter,ios,uiactivityviewcontroller,uiactivity,Ios,Uiactivityviewcontroller,Uiactivity,我正在重构代码以使用UIActivitiy和UIActivityProvider。我遇到了一个问题,Twitter不再显示在UIActivityViewController中 我发现如果不止一个UIActivityProvider类将占位符项分配给UIImage类对象,Twitter将不会出现。似乎没有其他活动受到该活动无法使用的占位符类的影响 对于上下文,以下是一些设置代码: NSArray *applicationActivities = @[reviewActivity, myEmailA

我正在重构代码以使用UIActivitiy和UIActivityProvider。我遇到了一个问题,Twitter不再显示在UIActivityViewController中

我发现如果不止一个UIActivityProvider类将占位符项分配给UIImage类对象,Twitter将不会出现。似乎没有其他活动受到该活动无法使用的占位符类的影响

对于上下文,以下是一些设置代码:

NSArray *applicationActivities = @[reviewActivity, myEmailActivity];
NSArray *excludeActivities = @[UIActivityTypeAssignToContact,
                               UIActivityTypePrint,
                               UIActivityTypeSaveToCameraRoll,
                               UIActivityTypePostToWeibo];

UIActivityItemProvider *screenshotProvider = [[ScreenshotActivityProvider alloc] initWithView :self.scrollView];
UIActivityItemProvider *textProvider = [[TextActivityProvider alloc] initWithExchangeDoc:self.docItem];
UIActivityItemProvider *imageProvider = [[ImageActivityProvider alloc] initWithExchangeDoc:self.docItem];
NSArray *activityItems = @[textProvider, screenshotProvider, imageProvider];
                                                                        applicationActivities:applicationActivities];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems
                                                                        applicationActivities:applicationActivities];
我使用的UIActivityItemProvider示例是:

- (id)initWithExchangeDoc :(ExchangeDoc *)docItem
{
    self = [super initWithPlaceholderItem:[UIImage new]];
    _docItem = docItem;
    return self;
}

- (id)item
{
    if ([self.activityType isEqualToString:UIActivityTypePostToTwitter]) {
        return self.docItem.thumbImage;
    } else {
        return nil;
    }
}
问题在于initWithPlaceholder项。我有另一个UIActivityProvider,它将UIImage标识为占位符类

我认为自定义项提供程序的目的是,在UIActivityViewContrller启动后,我的类可以决定提供了哪些数据。就我而言,我的屏幕截图提供商没有为Twitter提供任何东西。为什么iOS盯着我的占位符,决定不把Twitter作为一项可行的活动?我的提供商将根据活动类型对提供图像的人员进行分类

文档中对占位符项作了如下说明:

可以替代您计划创建的实际对象的对象。对象的内容可能为空,但对象的类必须与您计划稍后提供的对象的类匹配

显然,这对我来说并不适用于Twitter。作为一个实验,我将所有占位符项都改为空,并且Twitter和所有其他活动都运行良好

有人知道这些占位符项用于什么,以及将它们设置为错误的类是否会产生任何负面影响吗


对不起,时间太长了。感谢您的帮助。

活动将查看您提供的每种类型的服务数量。Twitter似乎只支持每条推文一张图片。因此,如果您使用图像占位符放置多个提供者,而不是随意为tweet选择一个图像,那么活动视图控制器根本不显示twitter。 似乎没有。您可以解决此问题,根据activityType更改共享项目的数量或类型