Я пытаюсь, чтобы инструмент разметки 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.
Спасибо