UIDocumentInteractionController не показывает опцию почты

Вот UIDocuemtnInteractionController из моего приложения (не показывает опцию почты) введите здесь описание изображения

Здесь используется образец проекта Apple введите здесь описание изображения

Вот соответствующие коды

Мое приложение

docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
[docInteractionController presentOpenInMenuFromBarButtonItem:(UIBarButtonItem*)sender animated:YES];

Пример проекта Apple

NSURL *fileURL;
if (cellIndexPath.section == 0)
{
    // for section 0, we preview the docs built into our app
    fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:documents[cellIndexPath.row] ofType:nil]];
}
else
{
    // for secton 1, we preview the docs found in the Documents folder
    fileURL = [self.documentURLs objectAtIndex:cellIndexPath.row];
}
self.docInteractionController.URL = fileURL;

[self.docInteractionController presentOptionsMenuFromRect:longPressGesture.view.frame
                                                   inView:longPressGesture.view
                                                 animated:YES];

ЧТО МНЕ НУЖНО СДЕЛАТЬ, ЧТОБЫ ПОЛУЧИТЬ ВАРИАНТ ПО ПОЧТЕ?


person BangOperator    schedule 28.04.2014    source источник
comment
Какой тип файла вы пытаетесь? Покажи нам свой код fileURL?   -  person GenieWanted    schedule 28.04.2014
comment
доступно ли почтовое приложение на вашем устройстве?   -  person KIDdAe    schedule 28.04.2014
comment
@GenieWanted Вот описание URL-адреса файла Печать описания URL-адреса файла: file:///Users/Name/Library/Application%20Support/iPhone%20Simulator/7.1/Applications/A0DC474B-790F-47DD-9DAA-F1B85A161DDD/Documents/Download /Важные%20Новости%20О%20Ваши%20Налоги.pdf   -  person BangOperator    schedule 28.04.2014
comment
@KIDdAe, ДА .... И оба вышеуказанных приложения (мое приложение и пример приложения Apple) работали на симуляторе. Поэтому я полагаю, что если образец яблока мог это показать, то даже мое приложение должно было это показать.   -  person BangOperator    schedule 28.04.2014
comment
Вы пытались изменить presentOptionsMenuFromRect на presentOpenInMenuFromRect:inView:animated?   -  person GenieWanted    schedule 28.04.2014
comment
Кроме того, попробуйте использовать [docInteractionController presentPreviewAnimated:YES]; и посмотрите, действительно ли это влияет? У меня есть такая же строка кода в моем приложении, и она работает (показывает почтовое приложение)   -  person GenieWanted    schedule 28.04.2014


Ответы (1)


Чтобы предоставить вариант Mail, -presentOpenInMenuFromBarButtonItem: должно быть -presentOptionsMenuFromRect:

Согласно документам Apple на UIDocumentInteractionController

Для -presentOpenInMenuFromBarButtonItem:animated: написано:

Этот метод аналогичен методу presentOptionsMenuFromBarButtonItem:animated:, но представляет собой меню, ограниченное списком приложений, способных открыть текущий документ. Это определение выполняется на основе типа документа (как указано в свойстве UTI) и типов документов, поддерживаемых установленными приложениями.
...
Если нет зарегистрированных приложений, поддерживающих открытие документа, контроллер взаимодействия с документом не отображает меню.

So:

  1. Чтобы представить варианты открытия файла, используйте -presentOpenInMenuFromBarButtonItem:
  2. Чтобы представить все возможные параметры, применимые к файлу, используйте -presentOptionsMenuFromBarButtonItem: или общий -presentOptionsMenuFromRect:

Также... для любого файла было бы лучше указать тип UTI :

Пример:

docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
//[docInteractionController setDelegate:self];
[docInteractionController setUTI:@"public.data"];
[docInteractionController presentOptionsMenuFromBarButtonItem:(UIBarButtonItem*)sender 
                                                animated:YES];
//or a generic method
//[docInteractionController presentOptionsMenuFromRect:sender.frame
//                                            animated:YES];
person staticVoidMan    schedule 28.04.2014
comment
@somexyz: отлично, это действительно должно быть -presentOptionsMenuFromRect:. Я обновил ответ (спасибо вам): P - person staticVoidMan; 28.04.2014
comment
В вашем примере, я думаю, вы имеете в виду: [docInteractionController presentOptionsMenuFromBarButtonItem:(UIBarButtonItem*)sender animated:YES];. Как и сейчас, это не будет компилироваться или запускаться. - person Logan; 20.08.2014
comment
У меня похожая ситуация, но я также хочу показать опцию почты, поэтому я не могу использовать presentOpenInMenuFromBarButtonItem. Но presentOptionsMenuFromBarButtonItem не работает на iOS 8 (должно быть ошибка). Так что я могу сделать? - person Shwethascar; 04.12.2014
comment
Спасибо, чувак, presentOptionsMenuFromRect работает как шарм :) - person Nirav Gadhiya; 06.05.2016
comment
Большой!! Спасибо! - person Kuchur Andrei; 20.04.2017