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