John
John

Reputation: 1888

UIDocumentPickerViewController doesn't call the didPickDocument method

I have a document picker, but after selecting a document, the didPickDocumentAt part is never triggered. It was working before I updated swift, is there something that is different now?

func selectDocument(_ sender: UIButton!){
    let documentPickerVC = UIDocumentPickerViewController(documentTypes: ["org.openxmlformats.wordprocessingml.document", "com.microsoft.word.doc"], in: UIDocumentPickerMode.import)
    documentPickerVC.delegate = self
    self.present(documentPickerVC, animated: true, completion: nil)
}

func documentPicker(_ documentPicker: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
    print("file picked: \(url)")
    documentPicker.dismiss(animated: true, completion: nil)
}

Nothing is 'failing' either, it just isn't calling that documentPicker method.

I have a similar one for selecting media and that one works fine...

func selectMedia(_ sender: UIButton!){
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){
        picker.delegate = self
        picker.allowsEditing = false
        picker.mediaTypes = [kUTTypeMovie as String]
        self.present(picker, animated: true, completion: nil)
    }
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[String: Any]) {
    let url = info[UIImagePickerControllerMediaURL] as! URL
    print("media picked: \(url)")
}

Edit: I just added the documentPickerWasCancelled method, and for some reason that is being called when I select a document. Note I am selecting a document from google drive, would that have an affect on anything?

Edit 2: Answered, uninstalled and reinstalled and it worked. See answer below. Thanks everyone for the suggestions.

Upvotes: 5

Views: 2236

Answers (1)

John
John

Reputation: 1888

The above code looks like it is correct. I uninstalled the google drive app (where I was getting files from) and reinstalled it and then it worked as expected. I also tried from dropbox and that worked as well.

Not sure what was making it fail before.

Upvotes: 1

Related Questions