iOS 13 / iPad. Поведение кнопки «Готово» в UIActivityViewController. Инструмент разметки - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь, чтобы инструмент разметки UIActivityViewController работал в моем приложении с использованием приведенного ниже кода (только iOS 13 / iPad):

@IBAction func actionButtonPressed(_ sender: UIBarButtonItem) {
    let items = [<URL of a pdf file>]
    let avc = UIActivityViewController(activityItems: items as [Any], applicationActivities: nil)
    avc.modalPresentationStyle = UIModalPresentationStyle.popover
    avc.popoverPresentationController?.barButtonItem = sender

    avc.completionWithItemsHandler = { (type,completed,items,error) in
        if type == .markupAsPDF {
            if completed {
                print("markup completed")
            } else {
                print("markup not completed")
            }
        }
    }

    self.present(avc, animated: true, completion: nil)
}

Файл PDF находится в контейнере iCloud моего приложения.

Все хорошо, пока я не нажму кнопку Готово (верхний левый угол). Затем мне предоставляется два варианта: «Сохранить файл в ...» и «Удалить PDF» (см. Рисунок ниже)

«Сохранить файл в ...» / «Удалить PDF»

1) Эти два варианта не имеют никакого смысла для моего приложения. Что мне действительно нужно, так это «Сохранить» и «Отмена».

2) Хотя мне не важен вариант «Сохранить файл в ...», похоже, он работает как положено.

3) Опция «Удалить PDF» кажется пугающей. Пользователи могут подумать, что оригинальный файл PDF будет удален, а это не то, что им нужно. У них нет других вариантов ... Но оказывается, что выбор «Удалить PDF» просто сохраняет аннотации в исходном файле PDF. Это полностью сбивает с толку (и возвращенный флаг «завершено» имеет значение false ....)

Я заметил, что приложение iOS Files также позволяет аннотировать PDF-файлы, но в случае с приложением Files, когда пользователь при нажатии кнопки «Готово» аннотации просто сохраняются без параметров «Сохранить файл в ...» / «Удалить PDF». Это было бы намного предпочтительнее для моего приложения.

Я попытался сделать несколько вещей (например, передать NSData вместо URL, скопировать файл в локальную папку «Документы» и т. Д. c ...) безуспешно.

Кто-нибудь знает, как реализовать поведение приложения «Файлы»?

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

Спасибо

...