Подтвердить что ты не робот

UIDocumentInteractionController добавление пользовательских действий в меню (например, электронная почта, сохранение фотографий)

Я начал использовать UIDocumentInteractionController для нового приложения, но мне интересно, как добавить дополнительные действия в меню действий, которое вы получаете на экране предварительного просмотра?

Кажется, что в меню перечислены только приложения, зарегистрированные для данного типа URL, и я вижу, что PRINT отображается на iOS4.2. Я хотел бы добавить отправку по электронной почте и сохранить фотографии, но не вижу способа расширения этого меню. Я могу закодировать действия, которые я хочу OK, просто добавив их в меню, которое кажется невозможным?

Я пропустил что-то очевидное?

4b9b3361

Ответ 1

Вы правы, Это методы

- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller performAction: (SEL) action


- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller canPerformAction: (SEL) action

Поддерживаемые селектора действий для этих методов: копировать: и печать:.

Ответ 2

Чтобы отображать сообщения электронной почты и опции "сохранить", вы должны использовать

- (BOOL)presentOptionsMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;

или

- (BOOL)presentOptionsMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;

Как описано в UIDocumentInteractionController.h:

/Это метод по умолчанию, который вы должны позвонить, чтобы дать вашим пользователям возможность быстро просматривать, открывать или копировать документ. /

При использовании

//Представляет меню, позволяющее пользователю открыть документ в другом приложении.

- (BOOL)presentOpenInMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;

или

- (BOOL)presentOpenInMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;

электронная почта, смс и "сохранить фото/видео" не отображаются.

Если требуются другие действия, которые не распознаются, рассмотрите возможность использования UIActionSheet.

Ответ 3

Я не могу комментировать, поэтому я отвечаю вместо этого: -)

Вы должны попробовать QuickLook. В моем случае я искал все, как настроить UIDocumentInteractionController и не нашел ничего полезного. Я достиг того, что хотел (в моем случае, с предварительным просмотром "просмотра" внутри другого представления) с помощью QuickLook. Вот пример кода, чтобы иметь QLPreviewController в качестве дочернего контроллера (возможность свободно создавать родительский контроллер, который будет делать трюк в вашем случае).

self.previewController = [[QLPreviewController alloc]init];
self.previewController.delegate=self;
self.previewController.dataSource=self;
[self addChildViewController:self.previewController];
self.previewController.view.frame = CGRectMake(0, 0, self.previewView.frame.size.width, self.previewView.frame.size.height);
[self.previewView addSubview:self.previewController.view];
[self.previewController didMoveToParentViewController:self];

Вам также понадобятся некоторые делегаты: QLPreviewControllerDataSource и QLPreviewControllerDelegate

а также некоторые из них необходимо реализовать:

- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index

вернуть NSURL ресурсу

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller

вернуть количество элементов для предварительного просмотра (в моем случае, 1)

Ответ 4

Я мог бы предложить простой UIActionSheet или лучше popover, если вы на iPad со встроенным табличным представлением с приложениями, и вы можете вручную добавить Print, email и все остальное.