Нажатие на опцию «Добавить теги» отклоняет базовое модальное представление, внезапно запущенное UIDocumentInteractionController. - PullRequest
4 голосов
/ 22 февраля 2020

Я использую UIDocumentationInteractionController, чтобы показать параметры общего доступа для документа PDF. (См. Изображение ниже) Все работает, как и ожидалось, за исключением опции Add Tags

document interaction controller screenshot

Нажатие на нее немедленно отклоняет модальное представление контроллера вместо отображения другое всплывающее окно для выбора тегов.

Я также вижу эту ошибку на консоли, когда выполняю описанный выше рабочий процесс.

DocInteractionTest[7132:5381612] Warning: Attempt to present <_UIRemoteViewController: 0x118003a00> on <UIActivityContentViewController: 0x116000000> whose view is not in the window hierarchy!

Я полагаю, что это происходит, когда модальное представление отклоняется до добавления модального Add Tags в стеке иерархии представлений. Однако я не могу понять, почему это происходит? Кто-нибудь еще видел подобную проблему в прошлом?

Было бы неплохо скрыть эту опцию (добавить теги), но я сомневаюсь, что это возможно, поскольку Apple не предоставляет никаких API для этого.

Вот пример кода что мне нужно запустить модальное представление контроллера взаимодействия с документами (я включил только соответствующие части)

@interface ViewController () < UIDocumentInteractionControllerDelegate>

@property (nonatomic, strong) UIDocumentInteractionController *shareDocumentInteractionController;

@end

@implementation ViewController

- (void) showShareMenu:(id) sender {
    NSURL* url = [NSURL fileURLWithPath:[self getPDFPath]]; // pdf document path on disk
    self.shareDocumentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
    self.shareDocumentInteractionController.delegate = self;
    self.shareDocumentInteractionController.UTI = @"com.adobe.pdf";
    [self.shareDocumentInteractionController presentOpenInMenuFromBarButtonItem:sender animated:YES];
}

@end

1 Ответ

3 голосов
/ 25 февраля 2020

Также было бы неплохо скрыть эту опцию (Добавить теги), но я сомневаюсь, что это возможно, поскольку Apple не предоставляет никаких API для этого.

Что касается На приведенный выше комментарий от меня в моем вопросе я случайно наткнулся на эту публикацию Apple, в которой рассказывается о передовых практиках относительно того, где следует сохранять документы приложения для своего приложения. Чтение этого поста привело меня к пониманию, что мы можем показать другое модальное меню в зависимости от того, где мы сохраняем документ PDF и ссылаться на него для UIDocumentInteractionController.

. Когда я разместил пример кода выше, я сохранял PDF документ в формате NSDocumentDirectory. Однако, изменение его на NSCachesDirectory показывает мне другое меню (без опции Show Tags, которая мне нужна). Кроме того, для моего конкретного c варианта использования временное сохранение PDF-документа в каталоге Caches просто идеально.

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

Новое модальное меню:

enter image description here

Было бы замечательно, если бы кто-то еще мог ответить, почему модал исчезает но пока я могу скрыть эту опцию Show Tags.

...