5

I have UIImagePickerController which is choosing photo or video from gallery, after selecting item, I want to determine which one is chosen, photo or video

 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    let mediaType = info[UIImagePickerControllerMediaType]

 }

I've found this: How to select any Video or Movie file from UIImagePickerController

but could not translate to Swift:

 if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) {

 }

thank you in advance

Community
  • 1
  • 1
Salome Tsiramua
  • 763
  • 3
  • 9
  • 21

4 Answers4

12

Use this

if let mediaType = info[UIImagePickerControllerMediaType] as? String {

    if mediaType  == "public.image" {
        print("Image Selected")
    }

    if mediaType == "public.movie" {
        print("Video Selected")
    }
}
Phani Bob
  • 745
  • 9
  • 15
5

Swift 4. Use this:

guard info[UIImagePickerControllerMediaType] != nil else { return }
let mediaType = info[UIImagePickerControllerMediaType] as! CFString

switch mediaType {
case kUTTypeImage:

    break
case kUTTypeMovie:

    break
case kUTTypeLivePhoto:

    break
default:
    break
}
Geoff H
  • 3,107
  • 1
  • 28
  • 53
1
if mediaType.isEqualToString(kUTTypeImage as String){

}

Worked :)

Salome Tsiramua
  • 763
  • 3
  • 9
  • 21
0

> Swift 4 Override didFinishPickingMediaWithInfo like this:

public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    guard let mediaType = info[UIImagePickerController.InfoKey.mediaType] as? String else {return}

    switch mediaType {
    case kUTTypeMovie:
        //handle movie here
    case kUTTypeImage:
        //handle image here
    }}