2013-04-22 12 views
6

Mam problem w mojej aplikacji. Po uzyskaniu statystyk generuję plik PDF i chcę pokazać UIActivityViewController z opcjami "Otwórz w iBooks" i "Wyślij pocztą" głównie (inne, takie jak "Otwórz w Dropbox" byłby świetny).Sterownik UIActivityViewController nie wyświetla opcji "Otwórz w iBooks"

Dobrze jest to, że przed próbuje użyć UIActivityViewController używałem UIDocumentInteractionController, z następującego kodu:

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

Gdzie URL jest ścieżka jak /Documents/../statistics.pdf. Udało się, pokazało popover z przyciskami otwartymi w iBooks i otwarte w Dropbox, ale nie Wyślij przez e-mail. Teraz zmieniłem go za pomocą następującego kodu:

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]; 

Gdzie pdfData jest obiektem NSData. I to też działa, ale teraz pokazuje opcję wysyłania go pocztą e-mail, ale nie dotyczy opcji iBooks. Oszalam, ponieważ nie znajduję przyczyny tego zachowania i potrzebuję dwóch opcji: iBook i Mail.

Nie wiem, czy ma to coś wspólnego z faktem, że UIDocumentInteractionController ma ścieżkę, która kończy się na .pdf, a UIActivityViewController ma tylko obiekt NSData. Ale nie mogę znaleźć na to rozwiązania.

Ktoś już znalazł ten problem?

Dziękuję bardzo.

+0

Czy wypróbowałeś 'presentOptionsMenuFromBarButtonItem' z UIDocumentInteractionController? - I myślę, że argument "initWithActivityItems" w UIActivityViewController akceptuje również elementy NSURL w tablicy, co może pomóc. –

+0

Dziękuję za odpowiedź, ale jeśli umieścisz adres URL w tablicy, pokazuje on tylko wysyłanie przez pocztę i publikuje na opcjach twittera, a jeśli wybierzesz opcję Wyślij pocztą, otworzy on kompilator poczty z tekstem zawierającym adres URL, ale bez dołączania pliku .. – diegomen

+0

OK, to był tylko pomysł! A co z presentOptionsMenuFromBarButtonItem? –

Odpowiedz

10

Gdy używasz presentOpenInMenuFromRect:inView:animated: dostajesz tylko listę aplikacji, które mogą pracować z danym plikiem.

To, czego chcesz użyć, to presentOptionsMenuFromRect:inView:animated:, które daje ci opcje, których szukasz.

+0

Dziękuję bardzo, ale jeśli otworzysz załączony plik PDF w poczcie, przejrzysz go i dotkniesz przycisku, wyświetli się popover z opcjami Otwórz w iBooks i wyślij pocztą, jak to możliwe? – diegomen

+0

Zamiast używać metody 'presentOpenInMenuFromRect:', należy użyć metody presentOpenInMenuFromRect: 'z' UIDocumentInteractionController'. – rmaddy

+0

Przepraszam, ale powiedziałeś to samo ...? o jakiej metodzie mówisz o zastąpieniu presentOpenInMenuFromRect:? – diegomen

Powiązane problemy