UIDocumentInteractionController voor menu Openen in - Werkt niet

Ik heb een UIDocumentInteractionController geïmplementeerd om bestanden naar andere apps te verzenden. Het bestand is een .txt-bestand.

Hier is de code:

UIDocumentInteractionController *interactionController = [[UIDocumentInteractionController alloc] init];
[interactionController setURL:[NSURL fileURLWithPath:filePath]];
[interactionController setUTI:@"public.text"];
[interactionController setDelegate:self];
[interactionController presentOpenInMenuFromBarButtonItem:actionBarButtonItem animated:YES];

Het menu opent prima, met apps zoals Pages, Dropbox, enz. Zoals ik verwacht. Maar wanneer ik op een van de twee tik, wordt het menu Openen in gesloten en wordt er geen actie uitgevoerd (het bestand wordt niet verzonden en de doeltoepassing wordt nooit geopend.

Ik probeerde de gedelegeerde methoden te implementeren documentInteractionController: canPerformAction: en documentInteractionController: performAction: voor het activeren van kopiëren: en print: oproepen via het optiemenu (in tegenstelling tot het menu open in) en dat zorgde voor een menu met alleen de vermelde pagina's, maar dat werkte nog steeds niet.

Hoe kan dit worden opgelost?

22

3 antwoord

Ik vond het antwoord en het is geheugenbeheer. Ik maak de UIDocumentInteractionController en presenteer deze, maar ik heb het niet als een instantievariabele. ARC deallocatie voordat het de mogelijkheid heeft om iets te doen. Dit omvat het verzenden van het document naar de externe app.

Deze bug verscheen niet op de iPhone, maar op de iPad geeft het een foutmelding omdat de popover-architectuur een beetje anders werkt en het uiteindelijk probeert te tekenen wanneer het wordt verwijderd. Dat is wat me waarschuwde voor de bug.

49
toegevoegd
thnx. heb een paar uur doorgebracht. maar vergeet Arc. thnx nog een keer.
toegevoegd de auteur Serg Shiyan, de bron
Dit is het antwoord voor ARC-projecten. U moet een property declareren voor de UIDocumentInteractionController: @property (nonatomic, strong) UIDocumentInteractionController * docController;
toegevoegd de auteur tony.tc.leung, de bron
bedankt! Ik heb lang op stapel gezocht en uiteindelijk vond ik dat dit antwoord voor mij werkt.
toegevoegd de auteur huoxinbird, de bron

Deze bug verschijnt ook op iPhone/iPod. Stel gewoon in:

@property (nonatomic, retain) UIDocumentInteractionController *docController;

en het zal worden bewaard en het document wordt doorgegeven aan de nieuwe applicatie.

16
toegevoegd

het is genoeg om de volgende code toe te voegen:

[interactionController retain];
4
toegevoegd