2012-09-25 8 views
16

Como se lanzó el nuevo SDK (iOS 6), el método delegado documentInteractionController:canPerformAction: del UIDocumentInteractionControllerDelegate está en desuso.Abrir en + UIDocumentInteractionController: cómo filtrar opciones en SDK iOS 6 (canPerformActions está en desuso)

Utilizando ese método, pudo evitar que aparezcan acciones predeterminadas como print: y copy:.

Se invoca el método en la versión actual de iOS 6, pero en versiones futuras no se llamará a este método y mi aplicación mostrará acciones que no quiero admitir.

He leído la documentación disponible para el UIDocumentInteractionController y su delegado y no puedo encontrar otra manera de hacer lo que hago en el método canPerformAction.

¿Alguna idea?

Como un plus, sería genial poder filtrar aplicaciones como correo o twitter (que aparece de manera predeterminada) pero supongo que esto no es posible.

Respuesta

6

Creo que es porque Apple quiere que uses el nuevo control UIActivity.

aquí Es la documentación:

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivity_Class/Reference/Reference.html

Aquí se trata de un control personalizado desarrollado para apoyar muchas de las aplicaciones de terceros:

http://www.cocoacontrols.com/platforms/ios/controls/uiactivitycollection

Y esta pregunta resuelve cómo podría usted hacer su propio UIActivity:

https://stackoverflow.com/a/12766330/736384

Por lo tanto, si usted no desea que el usuario puede utilizar copia: y de impresión: métodos que acabamos de pasar esta actividad a la UIActivityViewController, así:

[activityView setExcludedActivityTypes:[NSArray arrayWithObjects:UIActivityTypeCopyToPasteboard, UIActivityTypePrint, nil]]; 

Todo el las actividades predeterminadas se enumeran en la parte inferior del enlace de documentación de Apple.

+0

Hola ..¡gracias por la respuesta! No vi que Jaja entrante profundizaría en esto, pero a simple vista parece ser el futuro. ¡Gracias de nuevo! – Omer

+12

entonces ... si esto fuera cierto, ¿cómo abriría un archivo en otra aplicación (actualmente trabajando con openWith ... y QuickLookPreview de UIDocumentInteractionController?). AFAICS no hay soporte para esto en UIActivityViewController (además de que UIActivityViewController también tiene algunas limitaciones bastante severas) – auco

+5

De acuerdo con auco: ¿cómo se puede abrir ahora en ... xlxs o similar con iOS6? – Rossi

7

De acuerdo en el hecho de que desaprobar 'canPerformAction' en el delegado es problemático, perdimos el control de grano fino que solíamos tener.

Sin embargo, si lo que quieres es permitir que un documento que se abrirá en otra aplicación, y quería eliminar la copia, impresión e incluso correo, supongo que es mejor usar la versión de OpenIn método para presentar el UIDocumentInteractionController?

es decir, para su uso UIDocumentInteractionControllerpresentOpenInMenuFromBarButtonItem:animated: o presentOpenInMenuFromRect:inView:animated:

(en lugar de presentOptionsMenuFromBarButtonItem:animated: o presentOptionsMenuFromRect:inView:animated:)

De esta manera, por defecto, será sólo mostrará las aplicaciones que pueden abrir el documento, y se esconde Enviar o copiar y Impresión.

+1

De esta forma, el resto de las opciones no están disponibles (FB, Twitter, etc.). ¿Qué pasa si alguien quiere tener OpenIn y FB ..? – Vive

+0

En el simulador no puede haber aplicaciones instaladas para abrir el contenido y el menú no se mostrará. Consulte esta pregunta y respuesta: http://stackoverflow.com/questions/23624218/presentopeninmenufrombarbuttonitem-doesnt-cause-menu-to-appear – Suragch

+0

No hace que las otras opciones no estén disponibles por cierto. Y actualmente es la única forma de compartir en Instagram, por ejemplo. El triste estado de compartir/comunicaciones entre aplicaciones iOS. –

Cuestiones relacionadas