Diferentes datos para compartir proveedores en UIActivityViewController

Estoy tratando de usar un UIActivityViewController con un NSString largo como datos. Si pongo una cadena> 140 caracteres, la hoja de tweets no muestra la cadena. Y si trunco ​​la cadena antes de dársela al controlador, todas las UIActivities tienen la cadena truncada. No quiero que Facebook o Mensaje se trunquen.

¿Hay alguna manera de dar diferentes cadenas a diferentes UIActivities ?

¡Gracias!

(Por ejemplo, la aplicación The Magazine de Marco Arment lo hace con una cadena truncada seguida de @TheMagazineApp en UIActivityPostToTwitter , y otras cosas en otras UIActivities ).

Creo que esto es lo que estás buscando

Debería poder proporcionar datos diferentes para cada tipo de actividad.

Espero que esto ayude a alguien. Es bastante sencillo si subclase UIActivityItemProvider :

 @interface MyActivityItemProvider : UIActivityItemProvider @end @implementation MyActivityItemProvider - (id)item { // Return nil, if you don't want this provider to apply // to a particular activity type (say, if you provide // print data as a separate item for UIActivityViewController). if ([self.activityType isEqualToString:UIActivityTypePrint]) return nil; // The data you passed while initialising your provider // is in placeholderItem now. if ([self.activityType isEqualToString:UIActivityTypeMail] || [self.activityType isEqualToString:UIActivityTypeCopyToPasteboard]) { return self.placeholderItem; } // Return something else for other activities. Obviously, // you can as well reuse the data in placeholderItem here. return @"Something else"; } @end 

A continuación, pase su instancia con una matriz de elementos de actividad a UIActivityViewController:

 MyActivityItemProvider *activityItem = [[MyActivityItemProvider alloc] initWithPlaceholderItem:@"Your data"]; NSArray *sharingItems = [NSArray arrayWithObjects: activityItem, _myUITextView.viewPrintFormatter, nil]; UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];