8

我使用标准图像选择器制作一些相机照片。

当用户使照片图像选择器向他显示带有 2 个按钮“重拍”和“使用”的预览屏幕。

如何检测预览屏幕现在处于活动状态或按下“重拍”按钮? 可能吗 ?有用的属性或事件是什么?就像当图像源是库时 is 属性 - 允许编辑,它显示类似的 screen 。

UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
4

2 回答 2

0

事后一点,但也许有人仍在像我一样寻求这个答案。如果您想继续使用本机相机控件,您可以检查 ImagePickerController 的子视图以确定是否显示后记录视图。

BOOL videoTaken = NO;

for (UIView *aView in self.imagePickerController.view.subviews[0].subviews[0].subviews[0].subviews)
{
    if ([aView isKindOfClass:NSClassFromString(@"PLTileContainerView")])
    {
        videoTaken = YES;
        break;
    }
}

“PLTileContainerView”是包含编辑滑块的子视图,可让您逐帧查看视频,因此如果存在,则表示您的视频已经录制。

于 2017-05-03T19:49:13.720 回答
-2

用来:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{    
    [picker dismissModalViewControllerAnimated:NO];
    NSString *type = [info objectForKey:@"UIImagePickerControllerMediaType"];
    if ([type isEqualToString:@"public.movie"]) {

    } else {
        UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    }
}

对于 Cancel 你没有检测它的方法(除了 subclassing UIImagePickerController,这可能是被禁止的,或者我不知道的其他方式),但可以肯定的是第二个 cancel 是可检测的:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {    
    [picker dismissModalViewControllerAnimated:YES];
}
于 2013-01-29T11:54:01.627 回答