Метод UIDocumentPickerDelegate (didPickDocumentsAt) не вызывается iOS

Время Kludge - см. Генерировать результат System.Xml.XmlDocument.OuterXml (), который действителен в HTML

В основном после того, как XML-документ был создан, пройдите через каждый узел, добавив пустой текстовый узел, если нет детей

// Call with
addSpaceToEmptyNodes(xmlDoc.FirstChild);

private void addSpaceToEmptyNodes(XmlNode node)
{
    if (node.HasChildNodes)
    {
        foreach (XmlNode child in node.ChildNodes)
            addSpaceToEmptyNodes(child);
    }
    else         
        node.AppendChild(node.OwnerDocument.CreateTextNode(""))
}

(Да, я знаю, что вам не нужно это делать, но если вы отправляете XML в какую-либо другую систему, которую вы не можете легко исправить, должны быть прагматичными в отношении вещей)

1
задан user2606782 17 January 2019 в 11:25
поделиться

1 ответ

Ответ прост: это унаследовано от UIViewController. Если вы просто добавляете представление viewController к вашему представлению, методы делегата не вызываются. ViewController имеет свой жизненный цикл. Пожалуйста, прочитайте здесь: https://developer.apple.com/documentation/uikit/uidocumentpickerviewcontroller

Итак, извинения за то, что некоторые как-то не так. Конечно, вы можете добавить sub-viewController, показывающий только его вид. Но: я думаю, что это не должно быть вариантом использования. Это полноэкранный ViewController, соответствующий руководствам по дизайну от самого Apple. При этом вы должны представить его следующим образом:

func addPicker() {
    var documentPickerController: UIDocumentPickerViewController!

    documentPickerController = UIDocumentPickerViewController(documentTypes: [String(kUTTypePDF)], in: .import)
    documentPickerController.delegate = self
    documentPickerController.allowsMultipleSelection = false

    present(documentPickerController, animated: true, completion: nil)
}

Имеются некоторые ошибки, из-за которых разработчик обнаружил, что представление отклоняется до вызова делегата. Насколько я видел, это поведение было введено с ios11 и произошло также, когда был представлен viewController. Я не могу сказать, исправлено ли это или нет, и связано ли это поведение с тем, чтобы показать его как подпредставление. (Я думаю, что это как-то исправлено, так как оно работает с представленным viewController)

В любом случае, вы должны просто представить его, как написано выше, и вы готовы к работе.

0
ответ дан Tomte 17 January 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: