Iphone 将录像机关闭到新的ViewController

Iphone 将录像机关闭到新的ViewController,iphone,objective-c,uiviewcontroller,uiimagepickercontroller,dismiss,Iphone,Objective C,Uiviewcontroller,Uiimagepickercontroller,Dismiss,在我的应用程序中,我允许用户选择是否要从库中选择照片、使用相机拍照或使用相机录制视频 选择或使用相机拍摄照片后,点击“使用”将关闭UIImagePickerController,并将用户带到新的UIViewController 当用户录制视频时,我也要这样做。现在,如果用户点击“使用”按钮,它只会解除选择器 如何检测选择器是否设置为录制视频 以下是我尝试过的: - (void)imagePickerController:(UIImagePickerController *)picker did

在我的应用程序中,我允许用户选择是否要从库中选择照片、使用相机拍照或使用相机录制视频

选择或使用相机拍摄照片后,点击“使用”将关闭UIImagePickerController,并将用户带到新的UIViewController

当用户录制视频时,我也要这样做。现在,如果用户点击“使用”按钮,它只会解除选择器

如何检测选择器是否设置为录制视频

以下是我尝试过的:

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
 {

     if (picker.mediaTypes == [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera] && picker.cameraCaptureMode == UIImagePickerControllerCameraCaptureModeVideo)
     {
          // Push to new view controller
          // dismiss the picker
     }

 }
有可能这样做吗?我应该检查什么

谢谢

参考苹果的。建议使用imagePickerController:didFinishPickingMediaWithInfo:代替imagePickerController:didFinishPickingImage:editingInfo:,后者自iOS 3以来一直被弃用。然后,可以检查信息字典的UIImagePickerControllerMediaType键的值,并与适当的类型进行比较

例如,请注意,您需要添加MobileCoreServices框架,并导入其标题:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSString *pickedMediaType = info[UIImagePickerControllerMediaType];
    NSString *movieType = (__bridge NSString *)kUTTypeMovie;
    NSString *imageType = (__bridge NSString *)kUTTypeImage;

    if ([pickedMediaType isEqualToString:movieType]) {
        NSLog(@"movie was picked");
    }
    else if ([pickedMediaType isEqualToString:imageType]) {
        NSLog(@"image was picked");
    }
    else {
        NSLog(@"something else was picked");
    }

    [self dismissViewControllerAnimated:YES completion:nil];
}

在您的应用程序中,您将使用问题中的适当操作替换日志记录语句,听起来您已经有代码可以推送到新的视图控制器,因此相应地替换日志记录语句。另外,请注意。当我比较字符串时,我使用isEqualToString:。

使用下面所述的代码来检测视频的录制,并在结束时将其发送到detailviewcontroller

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{   
[picker dismissModalViewControllerAnimated:YES];

NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];  

//not production code,  do not use hard coded string in real app
if ( [mediaType isEqualToString:@"public.image" ]) 
{                                                                                                        
    NSLog(@"Picked a photo");
}
//not production code,  do not use hard coded string in real app
else if ( [ mediaType isEqualToString:@"public.movie" ])
{
    NSLog(@"Picked a movie at URL %@",  [info objectForKey:UIImagePickerControllerMediaURL]);
    NSURL *url =  [info objectForKey:UIImagePickerControllerMediaURL];
    NSLog(@">>>>>>>>>>> Url %@", [url absoluteString]);
    RecordDetailiPhone *objDetail = [[RecordDetailiPhone alloc] initWithNibName:@"RecordDetailiPhone" bundle:nil];
    [objDetail saveVideoFileToDeractory:url];
    [self.navigationController pushViewController:objDetail animated:YES];
}
}

多谢各位!剩下的就是将视频传递到新的视图控制器!