Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中使用UIImagePickerController时,如何检测用户是否从库中选择图片或视频?_Ios_Objective C_Uiimagepickercontroller - Fatal编程技术网

在iOS中使用UIImagePickerController时,如何检测用户是否从库中选择图片或视频?

在iOS中使用UIImagePickerController时,如何检测用户是否从库中选择图片或视频?,ios,objective-c,uiimagepickercontroller,Ios,Objective C,Uiimagepickercontroller,我在ios应用程序中使用UIImagePickerController为用户提供从照片库中选择照片或视频的选项。我把视频限制在1分钟内。 这是我的密码: 在按钮操作中: - (void)getPictureOrVideoFromLibrary { CFStringRef mTypes[2] = { kUTTypeImage, kUTTypeMovie }; CFArrayRef mTypesArray = CFArrayCreate(CFAllocatorGetDefault(

我在ios应用程序中使用UIImagePickerController为用户提供从照片库中选择照片或视频的选项。我把视频限制在1分钟内。 这是我的密码:

在按钮操作中:

- (void)getPictureOrVideoFromLibrary {

    CFStringRef mTypes[2] = { kUTTypeImage, kUTTypeMovie };
    CFArrayRef mTypesArray = CFArrayCreate(CFAllocatorGetDefault(), (const void**)mTypes, 2, &kCFTypeArrayCallBacks);
    imagePickerController.mediaTypes = (__bridge NSArray*)mTypesArray;
    CFRelease(mTypesArray);

    imagePickerController.videoMaximumDuration = 60.0f;
    imagePickerController.allowsEditing = YES;

    imagePickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    [self presentViewController:imagePickerController animated:YES completion:nil];
}
我想在photolibrary中同时显示图片和视频,所以我使用了
kUTTypeImage
kUTTypeMovie
。 这里我将
videoMaximumDuration
设置为
60.0f
并将
allowediting
设置为
YES
,因为我想将视频长度限制为1分钟

我面临的问题: 当用户从库中选择视频时并没有问题,但若用户从库中选择图片,那个么图片上就会出现一个矩形框

选取者显示如下(带有视频和图片)[截图1]:

当用户选择视频时,其显示方式如下(按预期工作):

当用户选择图片时,其显示方式如下[screenshot2]:

我不想在这里显示矩形裁剪框

用户按“选择””后,我将能够在委托方法“didFinishPickingMediaWithInfo”中检测它是照片还是视频

但我想知道从截屏1到截屏2是照片还是视频。这样我就可以将
allowsdediting
设置为NO来去掉那个矩形框

可能吗

我不想将这两个选项都显示为“从库中选择照片”、“从库中选择视频”。 我只想显示一个选项“从库中选择照片或视频”

是否有任何方法可以检测用户是否选择图片或视频,或者是否有可能去掉那个矩形框

有可能实现吗

我需要你的宝贵建议。 请帮帮我。
提前谢谢

在委托方法上这样检查

   - (void)imagePickerController:(UIImagePickerController *)pickerImage didFinishPickingMediaWithInfo:(NSDictionary *)info
{

  // UIImagePickerControllerMediaType
 if(info[UIImagePickerControllerMediaType]==kUTTypeImage)
 {
    //image
 }
 else
 {
    //video
 }
}
1) 添加MobileCoreServices.framework


2) 导入下面的头文件。MobileCoreServices/MobileCoreServices.h

在@shesh nath的回答中只做了一点小小的改变。我只是将kUTTypeImage转换为
NSString
来解决此警告:

不同指针类型的比较('id _Nullable'和'CFStringRef' (又名“const struct uu CFString*”)


别忘了添加MobileCreservices框架。

您添加了委派方法吗?您是使用sinlge按钮用于照片和库还是有两个按钮一个用于“选择照片”,另一个用于“选择视频”?@sheshnath。我只有一个按钮可以从库中加载图片和视频。是@V-Xtreme。。我已经添加了。@AshokKumarS:你能在picker视图中同时看到图片和视频吗?谢谢@shesh nath。我知道这个方法。我想你没有理解我的问题,或者我的问题不清楚。我已经更新了。请检查一次。
二进制运算符'=='不能应用于'Any'和'CFString'类型的操作数。
- (void)imagePickerController:(UIImagePickerController*)imagePicker didFinishPickingMediaWithInfo:(NSDictionary*)info {

    if([info[UIImagePickerControllerMediaType] isEqualToString:(__bridge NSString *)(kUTTypeImage)])
    {
        NSLog(@"Image");
        //image
    }
    else
    {
        NSLog(@"Video");
        //video
    }
}