Twitter ausente al usar varias classs de UIActivityProvider

Estoy refactorizando mi código para usar UIActivitiy y UIActivityProvider. Me encontré con un problema donde Twitter ya no aparecía en el UIActivityViewController.

Descubrí que Twitter no aparecía si más de una de mis classs de UIActivityProvider asignaba PlaceholderItem a un object de class UIImage. Ninguna otra actividad parece verse afectada por las classs de marcador de position que la Actividad no puede usar.

Para el context, aquí hay algunos de los códigos de configuration:

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]; 

Una muestra de UIActivityItemProvider que estoy usando es:

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

El problema reside en el elemento initWithPlaceholder. Tengo otro UIActivityProvider que identifica un UIImage como la class de marcador de position.

Pensé que el propósito de los proveedores de artículos personalizados era que mi class pudiera decidir, después del lanzamiento de UIActivityViewContrller, qué datos se servían. En mi caso, mi proveedor de captura de pantalla no proporciona nada para Twitter. ¿Por qué el iOS mira a mi marcador de position y toma la decisión de no servir a Twitter como una actividad viable? Mis proveedores determinarán quién puede suministrar la image según el tipo de actividad.

Los docs dicen esto sobre placeholderItem:

Un object que puede representar el object real que planeas crear. El contenido del object puede estar vacío, pero la class del object debe coincidir con la class del object que planea proporcionar más adelante.

Obviamente, esto no está funcionando para mí con respecto a Twitter. Como un experimento, cambié todos los elementos de marcador de position para vaciar NSStrings y Twitter y todas las demás actividades funcionaron bien.

¿Alguien sabe para qué se utilizan estos elementos de marcador de position y si establecerlos en la class incorrecta tendrá algún efecto negativo?

Lo siento, esto es demasiado largo. Aprecio tu ayuda.

Las actividades miran cuántas de cada tipo proporciona. Twitter parece que solo admite 1 image por tweet. Por lo tanto, si coloca varios proveedores con marcadores de position de image, en lugar de seleccionar arbitrariamente una de las imágenes para el tweet, el controller de vista de actividad simplemente no muestra twitter en absoluto. No parece que pueda solucionarlo para variar la cantidad o el tipo de elementos que se comparten según el tipo de actividad aún.