iphone - 如果定义了 didFinishPickingMediaWithInfo,相机会卡住

标签 iphone objective-c ios camera

我正在尝试使用 iPhone 进行基本拍照。我使用以下代码来显示相机:

 - (BOOL) startCameraControllerFromViewController: (UIViewController*) controller
                                       usingDelegate: (id <UIImagePickerControllerDelegate,
                                                       UINavigationControllerDelegate>) delegate {

        if (([UIImagePickerController isSourceTypeAvailable:
              UIImagePickerControllerSourceTypeCamera] == NO)
            || (delegate == nil)
            || (controller == nil))
            return NO;


        UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
        cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;

        // Displays a control that allows the user to choose picture or
        // movie capture, if both are available:
        cameraUI.mediaTypes =
        [UIImagePickerController availableMediaTypesForSourceType:
         UIImagePickerControllerSourceTypeCamera];

        // Hides the controls for moving & scaling pictures, or for
        // trimming movies. To instead show the controls, use YES.
        cameraUI.allowsEditing = NO;

        cameraUI.delegate = delegate;

    [controller presentModalViewController: cameraUI animated: YES];
    return YES;
}

这工作正常,但是如果我定义处理函数:

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

}

imagePicker 控件在按下“使用”按钮后卡住。它没有崩溃,没有抛出任何异常,代码正在做某事,但在屏幕上我只看到卡住的 imagePicker 控件。即使处理程序为空,控件也会卡住。如果我删除处理程序,相机会正常消失并显示相机被激活的 View ...... 我在这里错过了一些重要的东西吗?

更新: 我尝试将图像分配给 UIImageView,代码执行,退出函数,仅此而已,相机保留在屏幕上:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    UIImage* original =[info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [[self imgWLItemImage] setImage:[UIImage imageWithCGImage:original.CGImage scale:0.25 orientation:original.imageOrientation]];
}

最佳答案

试试这个并检查:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
   [picker dismissModalViewControllerAnimated:YES];
    UIImage* original =[info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [[self imgWLItemImage] setImage:[UIImage imageWithCGImage:original.CGImage scale:0.25 orientation:original.imageOrientation]];
}

关于iphone - 如果定义了 didFinishPickingMediaWithInfo,相机会卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13983514/

相关文章:

objective-c - 获取给定 UTType 的扩展

ios - 无法准备 XYZ 的 iPhone 进行开发

iphone - UILocalNotification - 通知不显示

iphone - UITabBarController 和 UINavigationController

iphone - 如何在重启时应用设置更改?

iphone - 更新或替换 iCarousel 中的对象

ios - 在没有结构/模型的情况下读取 JSON 属性

ios - 使用 SLComposeViewController 在 Facebook 中分享图片

iphone - 在二维数组中使用 NSPredicate

iphone - 如何获取TableView中同一组的所有行