2017-04-12 3 views
0

Je travaille sur la création de contrôles personnalisés pour mon UIImagePickerViewController. J'ai le réglage par défaut du flash réglé à .off et je veux basculer entre activé et désactivé.iOS 10: UIImagePickerViewController ne peut pas définir le mode Flash

Mais j'ai beaucoup de mal à faire basculer le UIImagePickerControllerCameraFlashMode de marche à arrêt. Cela devrait apparemment être une chose très facile à définir. Mais j'ai essayé et je ne peux pas obtenir ce qui suit pour changer le mode de flash, il reste juste dans le mode .off.

func didTapFlashButton() -> Bool { 
    if let picker = mediaPicker { 
     if picker.cameraFlashMode == .on || picker.cameraFlashMode == .auto { 
      picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.off 
      return false 
     } 
     else { 
      picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.on 
      return true 
     } 
    } 
    return false 
} 

Pourquoi est-ce pas mettre à jour le mode flash sur mon UIImagePickerController?


EDIT (réponse à un commentaire)

Oui J'ai vérifié si le code est exécuté et il exécute toujours le bloc else pour le mettre à .on. Par conséquent, le UIImagePickerController reconnaît correctement que le mode de flash par défaut que j'ai défini est .false (vérifié via une instruction d'impression). Mais, chaque fois que j'appuie sur le bouton pour changer le mode flash en .on, le flash ne fonctionne jamais. Cela signifie qu'il n'a jamais mis à jour le mode flash sur le UIImagePickerController. Je ne sais pas pourquoi cela ne fonctionne pas et je ne trouve pas d'autre moyen de régler le mode de flash autre que ce que je suis en train de faire.

+0

Avez-vous vérifié que votre code est réellement exécuté? Est-ce que 'mediaPicker' contient la bonne valeur? – jcaron

Répondre

0

Celui-ci m'a fait me sentir vraiment stupide. Peu de temps après avoir posté cette question, j'ai réalisé que l'appareil sur lequel je testais n'avait pas de capacités de flash. Ce que vous devez faire si vous utilisez le mode flash, c'est d'abord de demander à la classe UIImagePickerController si l'appareil est capable d'utiliser flash en premier lieu. Documentation.