ios - open - uiimagepickercontrollerdelegate swift 4
UIImagePickerController en Swift 3 (2)
Creo que debes agregar privacy - key
para camara y biblioteca de fotos en tu archivo info.plist
desde xcode 8
. por ejemplo,
Key : Privacy - Media Library Usage Description
Value : YES
Key : Privacy - Photo Library Usage Description
Value : YES
Key : Privacy - Camara Usage Description
Value : YES
aquí el valor es string
no Boolean
.
así que prueba esto.
¡Consulta la documentación de Apple para más detalles!
Referencia: esto para publicar
Recientemente, actualicé a Swift 3 en Xcode 8 usando la versión beta del desarrollador. Estoy intentando implementar Firebase Auth, y todo va bien.
Mi problema:
Estoy intentando subir una imagen como imagen de perfil del usuario a una base de datos de Firebase.
Pensé que podía usar el UIImagePickerController
para hacer esto, pero cuando lo hago, obtengo un
"Tema 7: Señal SIGABRT
Sé lo que esto normalmente indicaría, pero lo verifiqué, y mi imagen sí imprime mi declaración de prueba cuando la toco.
Mi método fallido:
ViewController.swift
import UIKit
import Firebase
import Photos
class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
@IBOutlet weak var imageView: UIImageView!
@IBOutlet var emailTextField: UITextField!
@IBOutlet var passWordTextField: UITextField!
@IBOutlet var nameTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
if FIRAuth.auth()?.currentUser?.uid != nil {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let view = storyboard.instantiateViewController(withIdentifier: "ProfileViewController")
self.present(view, animated: true, completion: nil)
}
imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView)))
imageView.isUserInteractionEnabled = true
self.emailTextField.delegate = self;
self.passWordTextField.delegate = self;
self.nameTextField.delegate = self;
}
func handleSelectProfileImageView() {
let picker = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = true
present(picker, animated: true, completion: nil)
}
Todavía no estoy seguro de si esto es solo un problema con Swift 3 y el desarrollador Xcode 8 beta, o si lo estoy haciendo de forma incorrecta para swift 3.
EDITAR:
Estoy usando la versión GM de xcode8, pero sigo teniendo el mismo error.
Siga el mensaje de error de xCode y agregue la clave / valor a Info.plist
de la aplicación.
Por ejemplo, recibí un mensaje de error de mi aplicación en desarrollo. Me recuerda agregar NSCameraUsageDescription
a la aplicación Info.plist.
El mensaje de error de xCode
Esta aplicación se ha bloqueado porque intentó acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una clave NSCameraUsageDescription con un valor de cadena que explique al usuario cómo utiliza la aplicación estos datos.
Y más
Agregue el par key/value
a Localizable.strings
, le dará soporte i18n
. Por ejemplo, agrego un par a Localizable.strings (English)
. Dará una descripción en inglés cuando pregunte al usuario sobre el permiso de la cámara.
"NSCameraUsageDescription" = "We needs camera permission to capture image.";