2013-04-22 15 views
6

Ich habe ein Problem in meiner App. Nachdem ich einige Statistiken bekommen habe, generiere ich eine PDF-Datei, und ich möchte einen UIActivityViewController mit den Optionen "Öffnen in iBooks" und "Senden per Mail" hauptsächlich anzeigen (andere wie "Öffnen in Dropbox" wären toll).UIActivityViewController zeigt nicht "Öffnen in iBooks" -Option

Nun, die Sache ist, dass die Verwendung UIActivityViewController, bevor Sie versuchen, ich UIDocumentInteractionController wurde mit, mit dem folgenden Code:

self.docController = [UIDocumentInteractionController interactionControllerWithURL:url]; 
self.docController.delegate = self; 
[_docController presentOpenInMenuFromRect:_openInIBooksButton.bounds inView:self.openInIBooksButton animated:YES]; 

Wo url ist ein Weg, wie /Documents/../statistics.pdf. Es funktionierte, es zeigte ein Popover mit den in iBooks geöffneten und in Dropbox geöffneten Buttons, aber nicht Send by Mail. Jetzt habe ich es mit dem folgenden Code geändert:

NSArray* itemsToShare = [NSArray arrayWithObjects:pdfData, nil]; 
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil]; 
activityVC.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard]; //or whichever you don't need 
[self presentViewController:activityVC animated:YES completion:nil]; 

Wo pdfData ist ein NSData-Objekt. Und es funktioniert auch, aber jetzt zeigt es die Möglichkeit, es per E-Mail, aber nicht die iBooks Option zu senden. Ich werde verrückt, weil ich den Grund für dieses Verhalten nicht finde und ich die beiden Optionen, iBooks und Mail, brauche.

Ich weiß nicht, ob es etwas damit zu tun hat, dass der UIDocumentInteractionController einen Pfad hat, der mit .pdf endet und der UIActivityViewController nur ein NSData-Objekt hat. Aber dafür kann ich keine Lösung finden.

Jemand hat dieses Problem vor gefunden?

Vielen Dank.

+0

Haben Sie versucht, 'presentOptionsMenuFromBarButtonItem' von UIDocumentInteractionController? - Und ich denke, dass das 'initWithActivityItems'-Argument von UIActivityViewController auch NSURL-Elemente im Array akzeptiert, die helfen könnten. –

+0

Danke für die Antwort, aber wenn Sie eine URL in das Array legen, zeigt es nur die per E-Mail senden und Twitter-Optionen veröffentlichen, und wenn Sie auf per E-Mail senden tippen, öffnet es den Mail-Composer mit einem Text, der die URL enthält ohne die Datei anzuhängen .. – diegomen

+0

OK, es war nur eine Idee! Was ist mit presentOptionsMenuFromBarButtonItem? –

Antwort

10

Wenn Sie presentOpenInMenuFromRect:inView:animated: Sie nur eine Liste von Anwendungen erhalten, die mit der angegebenen Datei arbeiten kann.

Was Sie verwenden möchten, ist presentOptionsMenuFromRect:inView:animated: dem Sie die Optionen gibt, die Sie suchen.

+0

Vielen Dank, aber wenn Sie ein angehängtes PDF in einer Mail öffnen, eine Vorschau anzeigen und tippen Sie auf die Schaltfläche teilen, wird ein Popover angezeigt und es hat die Optionen Öffnen in iBooks und per E-Mail senden, wie ist es möglich? – diegomen

+0

Verwenden Sie anstelle der Methode 'presentOpenInMenuFromRect:' die Methode presentOpenInMenuFromRect: 'method of' UIDocumentInteractionController'. – rmaddy

+0

Sorry, aber du hast dasselbe gesagt ...? Über welche Methode sprichst du, um das presentOpenInMenuFromRect zu ersetzen:? – diegomen

Verwandte Themen