2014-10-13 8 views
20

UIDocumentInteractionControllerpresentOptionsMenuFromBarButtonItem mi dà un errore di console in hardware iOS 8 (e non su 7,1 hardware o precedenti):errore UIDocumentInteractionController presentOptionsMenuFromBarButtonItem in elementi di attività sconosciuto ios8- fornito

 
Unknown activity items supplied: (
    { 
    "com.adobe.pdf" = ; 
}, 
"" 
) 

Nella mia versione ufficiale App Store di mia app, l'app si arresta in modo anomalo a questo punto. Quando compilo e gira sul mio iPad, dà solo l'errore ma non si blocca.

Il mio codice:

Nella .h:

UIDocumentInteractionController *docInteractionController; 

Nella .m:

self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; 

self.docInteractionController.delegate = self; 
//UIBarButtonItem *element is an element in my toolbar 
[self.docInteractionController presentOptionsMenuFromBarButtonItem:element animated:YES]; 

Se faccio un NSLog di docInteractionController.UTI vedo "com.adobe.pdf" sulla console, quindi l'UTI viene riconosciuto correttamente.

posso andare in giro gli "elementi di attività sconosciute" utilizzando presentOpenInMenuFromBarButtonItem invece di presentOptionsMenuFromBarButtonItem per la chiamata UIDocumentInteractionController, ma voglio mostrare all'utente le opzioni di stampa ed e-mail, così, non solo l'applicazione esterna opzioni di apertura.

Testato su iPad versione 8.0.2. Xcode versione 6.0.1, obiettivo di distribuzione 6.0 (testato anche con il target di distribuzione 8.0). Tutti gli obiettivi-c. L'esecuzione su iPad versione 7.1 non produce l'errore.

+2

suona come un meraviglioso bug di iOS 8 –

+0

Ho lo stesso identico problema su IOS 8.0.2 iPad. – Prine

risposta

0

Questo risolto il problema per me:

dispatch_async(dispatch_get_main_queue(), ^() { 
     [_docController presentOptionsMenuFromRect:button.bounds inView:button animated:YES];    
    }); 
+0

Grazie per il suggerimento! Purtroppo, questo non ha cambiato il mio comportamento. – arinmorf

7

See radar: http://openradar.appspot.com/radar?id=5800473659441152

  • Come notato è possibile utilizzare al posto di presentOpenInMenu presentOptionsMenu. Perderete l'opzione di posta ma potete farlo da soli con MFMailComposeViewController con un pulsante di posta dedicato.
  • Oppure utilizzare UIActivityViewController con un elemento di attività "Apri in".
  • O solo un UIActivityViewController senza un elemento di attività "Apri In" se questo è sufficiente
  • o fare presentOptionsMenu su iOS7 runtime e UIActivityViewController su iOS 8 + runtime (dove esistono estensioni di condivisione)
+0

Grazie per il collegamento radar! Questo è esattamente ciò che è il mio bug. – arinmorf

4

Per le persone che non vogliono usa UIActivityViewController perché il controller di documenti è quello che vogliamo (tutte le azioni appaiono): puoi aggirare lo schianto mantenendo lo UIDocumentInteractionController, ad es. assegnandolo ad una proprietà e rilasciando quando l'interazione documento termina:

- (void)share:(id)sender 
{ 
    self.documentInteraction = [UIDocumentInteractionController interactionControllerWithURL:_shareURL]; 
    _documentInteraction.delegate = self; 
    _documentInteraction.name = self.title; 

    [_documentInteraction presentOptionsMenuFromBarButtonItem:_actionItem animated:YES]; 
} 

- (void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller 
{ 
    if (controller == _documentInteraction) { 
     self.documentInteraction = nil; 
    } 
} 

Il registro continuerà a essere visualizzata, almeno in di debug, non si sono verificati con una build di rilascio. Ma tutto funziona.

+0

Quando dici "il registro apparirà", vuoi dire che ricevi ancora l'errore/avviso della console? Perché quando compilo ed eseguo correntemente, non si blocca, dà solo un errore e continua. – arinmorf

+0

Sì, voglio dire che "Gli elementi di attività sconosciuta forniti" sono ancora registrati nella console. – Pascal

+0

Funziona, ma è così lento che l'app diventa del tutto inutilizzabile. Forse dipende dalle dimensioni del PDF? Nel mio caso, ci vogliono alcuni secondi prima che venga mostrato il popover. – Klemens

0

Stavo ricevendo gli stessi log della console, ma solo nelle build di debug. Prova a creare una build di rilascio e dovresti vedere che stampa ancora l'errore "Elementi di attività sconosciuti forniti", ma senza l'intero contenuto del file.

+0

Ottengo l'intero contenuto del file anche con la versione di rilascio. – Klemens

Problemi correlati