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
Какъв тип файл опитвате? Покажете ни вашия URL код на файла?   -  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