2013-04-22 2 views
6

У меня проблема в моем приложении. После получения некоторых статистических данных я создаю PDF-файл, и я хочу показать UIActivityViewController с параметрами «Open in iBooks» и «Send By Mail» в основном (другие, такие как «Open in Dropbox», были бы хороши).UIActivityViewController не показывает опцию «Открыть в iBooks»

Ну дело в том, что, прежде чем пытаться использовать UIActivityViewController, я использовал UIDocumentInteractionController со следующим кодом:

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

Где URL это путь, как /Documents/../statistics.pdf. Он работал, он показал popover с кнопками, открытыми в iBooks и открытыми в Dropbox, но не Send by Mail. Теперь я изменил его на следующий код:

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

Где pdfData является объектом NSData. И он тоже работает, но теперь он показывает возможность отправки по электронной почте, но не вариант iBooks. Я схожу с ума, потому что не нахожу причины такого поведения, и мне нужны два варианта: iBooks и Mail.

Я не знаю, связано ли это с тем, что UIDocumentInteractionController имеет путь, который заканчивается на .pdf, а UIActivityViewController имеет только объект NSData. Но я не могу найти для этого решения.

Кто-нибудь нашел эту проблему раньше?

спасибо.

+0

Вы попробовали 'presentOptionsMenuFromBarButtonItem' UIDocumentInteractionController? - И я думаю, что аргумент 'initWithActivityItems' UIActivityViewController также принимает элементы NSURL в массиве, что может помочь. –

+0

Благодарим за ответ, но если вы поместите URL-адрес в массив, он отображает только отправку по почте и публикует по параметрам Twitter, и если вы нажмете на отправку по почте, он откроет почтовый композитор с текстом, содержащим URL-адрес, но без прикрепления файла .. – diegomen

+0

ОК, это была просто идея! Как насчет presentOptionsMenuFromBarButtonItem? –

ответ

10

Когда вы используете presentOpenInMenuFromRect:inView:animated:, вы получаете список приложений, которые могут работать с данным файлом.

Что вы хотите использовать, это presentOptionsMenuFromRect:inView:animated:, который дает вам варианты, которые вы ищете.

+0

Большое спасибо, но если вы открываете прикрепленный PDF-файл по почте, вы просматриваете его и нажимаете кнопку share, отображается всплывающее окно, и у него есть опции. Откройте в iBooks и отправьте по почте, как это возможно? – diegomen

+0

Вместо использования метода 'presentOpenInMenuFromRect:' используйте метод presentOpenInMenuFromRect: '' UIDocumentInteractionController'. – rmaddy

+0

Извините, но вы сказали то же самое ...? о каком методе вы говорите о замене presentOpenInMenuFromRect:? – diegomen

Смежные вопросы