Я хотел бы поделиться пользовательским содержимым моего приложения для iOS 6.0 по электронной почте.
Но поскольку мой контент требует некоторого времени для подготовки, прежде чем я смогу поделиться им, я не могу сразу же показать представление создания почты, когда пользователь нажимает кнопку «Поделиться». К сожалению, MFMailComposeViewController нуждается во всех вложениях с самого начала, поэтому мне нужно дождаться вложения, прежде чем я смогу инициализировать и показать MFMailComposeViewController (как это предлагается здесь: UIActivityView прикрепить файл к электронной почте )
-- Изменить после прочтения ответа Сапана: я ищу поведение, подобное UIActivityViewController, при совместном использовании, например. видеофайл, который еще нужно создать: пользователь нажимает кнопку «Поделиться», и сразу же появляется UIActivityController. Вложение создается в фоновом режиме, и его создание не прерывает работу пользователя. --
Я попробовал UIActivityViewController с его хорошей асинхронной функцией UIActivityItemProvider, но, к сожалению, это работает только для вложений с общедоступными типами mime, такими как изображения и видео. Мой пользовательский «элемент» NSData просто игнорируется не только для обмена на Facebook (что имеет смысл), но и для обмена электронной почтой. Или я что-то не так делаю здесь:
MyUIActivityItemProvider *myCustomDocProvider = [[MyUIActivityItemProvider alloc] initWithPlaceholderItem:[[NSData alloc]init] andCustomInfoToCreateNSDataFrom:customAppInfo];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:@[myTextString, myCustomDocProvider] applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
Я уже думаю о создании собственного пользовательского представления для компоновщика электронной почты, чтобы я мог создавать вложения в фоновом режиме, пока/после того, как пользователь печатает. Но я не хочу. Мне нравится идея «согласованности элементов пользовательского интерфейса», о которой я читал в HIG.
Что я могу сделать?