UIImagePickerController permite editar = SÍ solo para video

Estoy usando el UIImagePickerController para permitir que el usuario select una foto o un video. El problema que estoy enfrentando es que utilizo mi propio editor de imágenes para fotos, así que quiere allowsEditing=NO para las fotos, pero el video debe tener cierta longitud, así que quiero allowsEditing=YES para video.

La configuration de la videoMaximumDuration del videoMaximumDuration para el selector de imágenes funciona bien cuando se graba el video, pero si se selecciona desde el rollo de la camera, solo se informa al usuario que el video es demasiado largo si se permite la allowsEditing .

Hasta ahora, puedo cambiar con éxito la propiedad allowsEditing cuando uso la camera al escuchar la notificación ImageControlModeChanged . Entonces puedo cambiar la propiedad usando:

 - (void)imageCaptunetworking:(NSNotification *)notification { if (imagePicker.cameraCaptureMode == UIImagePickerControllerCameraCaptureModeVideo) { imagePicker.allowsEditing = YES; } else { imagePicker.allowsEditing = NO; } } 

Sin embargo, esto no funciona cuando se selecciona desde el rollo de la camera. He supervisado las notifications y no puedo ver una que sea útil para cambiar la propiedad allowsEditing dependiendo de qué elemento fue seleccionado.

¿Es esto posible?

Gracias

¿Por qué no crear 2 o incluso 4 UIImagePickerController s en lugar de jugar con notifications?

 - (void) useCamera { if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.mediaTypes = [NSArray arrayWithObjects: (NSString *) kUTTypeImage, nil]; imagePicker.allowsEditing = NO; [self presentViewController:imagePicker animated:YES completion:nil]; } } - (void) useCameraRoll { if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum]) { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil]; imagePicker.allowsEditing = NO; [self presentViewController:imagePicker animated:YES completion:nil]; } } - (void)videoRoll { if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum]) { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePicker.mediaTypes = [NSArray arrayWithObjects: (NSString *) kUTTypeImage, nil]; imagePicker.allowsEditing = YES; imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; [self presentViewController:imagePicker animated:YES completion:nil]; } } - (void)vidCam { if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum]) { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.mediaTypes = [NSArray arrayWithObjects: (NSString *) kUTTypeImage, nil]; imagePicker.allowsEditing = NO; imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; [self presentViewController:imagePicker animated:YES completion:nil]; } } 

Editar:

Después de una mejor comprensión de la pregunta, no creo que sea posible. Hay algunas notifications que puede usar pero que no están documentadas en ninguna parte o que funcionan en iOS7. Si ese es el caso, la mejor solución que se me ocurre es utilizar un tercero como github.com/andrei200287/SAVideoRangeSlider y allowsEditing = NO para todo.

Pruebe estas properties de asignación en la vista que realizó la carga, no en el método imageCaptunetworking. funciona bien

  videoController.delegate = self; videoController.sourceType =UIImagePickerControllerSourceTypePhotoLibrary; videoController.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:videoController.sourceType]; videoController.allowsEditing = YES; 

puede verificar esto en el método didfinishpickingimage para image y video por este código, funciona bien.

 if([[info valueForKey:@"UIImagePickerControllerMediaType"] isEqualToString:@"public.image"]) { } else if([[info valueForKey:@"UIImagePickerControllerMediaType"] isEqualToString:@"public.movie"]) { }