【问题标题】:iPhone Camera Iris / Shutter stuck in closed positioniPhone 相机光圈/快门卡在关闭位置
【发布时间】:2011-11-09 00:33:25
【问题描述】:

正如标题所述,我正在开发的应用存在问题,该问题仅在应用进入后台后重新启动时引起。

相机光圈或快门卡在关闭位置。有趣的是您仍然可以拍照但看不到预览。拍摄照片后,它会正确显示在视图中。

如果应用完全关闭,则在启动应用时不会出现此问题。我可以拍照,添加效果等等,每次打开相机都可以正常工作。

以下是重现问题的具体步骤:

1) 我打开应用程序,一切正常。

2) 应用通过按home键或来电进入后台。

3) 当应用程序进入前台/重新打开并访问相机时,会显示快门屏幕并在卡住位置保持关闭状态。

4) 修复它的唯一方法是关闭模态视图相机控制器并再次按下相机按钮。

我进行了一些研究以找到答案,但一无所获。没有内存泄漏,我检查了仪器中的内存分配,没有任何异常。

希望有人有解决方案,感谢您的帮助。

提前谢谢你。

【问题讨论】:

  • 代表赏金比冷硬的现金更传统!
  • Jrturton,我很乐意提供赏金,但我认为我没有足够的声誉来提供声望。我只问了几个关于 SO 的问题。
  • 你只需要 50 分——这是两个被赞成和接受的答案——你可以做到!
  • 这也是我的问题我检查了我的代码然后我看到客户相机在修复后没有调用 dealloc 它没有发生对不起我的英语

标签: iphone camera uiimagepickercontroller


【解决方案1】:

我遇到了完全相同的问题,但缩小了一点——它只发生在 iOS 5 上。在其他人谈论内存的一些提示下,我在呈现 UIImagePickerController 和问题之前释放了尽可能多的内存停止发生。

【讨论】:

  • 你是如何释放内存的?您是否发布了当前图像?即使我举起相机但不拍照,也会出现此问题。我将按下相机按钮,然后取消它,关闭应用程序,重新打开它,然后按下相机按钮快门保持关闭状态。
  • 释放了我可以在视图控制器上调用 presentModalViewController 的所有图像和数据(从 5.5 meg 到 3.5 meg),这工作了一段时间,然后 5.01 出来了,后来又发布了几个版本,问题就来了背部。我一直保留 uiimagepickercontroller,因为每次释放它时我都可以看到泄漏,但这是一个错误 - 如果我只是在用户运行应用程序时继续重用它,并在他们退出时释放它并分配一个新的下次用户运行应用程序并拍照,它为我解决了问题。
  • 我最终做的是你在上一条评论中所说的。每次使用后我都会释放 imagePicker,并在每次调用它时分配一个新的。这完全解决了这个问题。无需释放内存或类似的东西。谢谢。
  • 嗨,我有同样的问题,但我无法发布 imagepicker,因为该应用程序位于 arc 框架中,并且在代码中使用 release 或 autorelese 时出错
  • 你的方法也很好......我在相机上有覆盖层并且这样做很有效。把它作为答案发布给大家看看。您可以在关闭 imagePickerController 后立即释放它以优化内存。
【解决方案2】:

我在 ARC 项目中运行时遇到了同样的问题。

按下主屏幕上的相机按钮,会显示 imagePickerController,取消 imagePickerController。按主页按钮(关闭)应用程序。回到我的应用程序并再次按下相机按钮。在这种情况下,快门会显示并卡住。

使用内存问题作为主要线索 - 我发现我的叠加视图有一个对 imagePickerController 的 strong 引用。我将其更改为 weak 引用,问题就消失了。

【讨论】:

  • 这也为我修复了它——我没有更改强/弱引用,因为我只有一个对 ImagePickerController 的引用,但我确实添加了一行来专门将引用设置为一旦我从相机中获取图像,就为零。似乎工作。
【解决方案3】:

我认为,当您遇到问题并尝试使用 Apple 应用拍照时,您也会遇到问题。不是吗?如果是,您可以重新启动设备以解决问题。并应用 dana 的提示。

【讨论】:

    【解决方案4】:

    当应用程序进入后台模式时,您应该关闭相机并在应用程序重新获得焦点时表示它。

    【讨论】:

    • 洛根,感谢您的快速回复。我应该让我的问题更清楚一点。该应用程序有两个视图:主视图和相机视图。按下按钮可访问摄像机视图。有趣的是,当应用程序在显示相机视图时关闭时,它重新启动就好了,快门打开了。从主屏幕关闭应用程序时会出现问题。然后,当应用程序重新打开并且用户按下相机按钮时,相机模式视图会显示快门卡在关闭位置。谢谢。
    【解决方案5】:

    我遇到了同样的问题,以下解决方案对我有用。 每当您以模态方式呈现 UIImagePickerController 时。初始化它并在使用后释放它。希望它也适用于你。

    self.imagePickerController = [[UIImagePickerController alloc] init];
    self.imagePickerController.delegate = self;
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
        self.imagePickerController.showsCameraControls = NO;
    
        self.imagePickerController.cameraOverlayView = cameraOverlayView;
    } else {
        self.imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    }
    [self presentViewController:imagePickerController animated:YES completion:^(void)
     {
       // If you want to do something extra
     }];
    

    【讨论】:

    • 如果该解决方案适合您,您能否也接受答案。谢谢
    【解决方案6】:

    以防万一有人在使用 MonoTouch 获得释放图像选择器的相同行为时遇到此问题,我必须调用 dispose 然后手动执行 GC.Collect();

    【讨论】:

      【解决方案7】:

      以下两者的组合对我有用

      1. 将叠加层的引用类型从“strong”更改为“weak” p>

      2. picker = nil ,关闭 imagePickerController 后(取消或拍照后)

      【讨论】:

      • 你是个天才!我在过去几个小时里找到的解决方案都没有奏效。 +1
      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2019-01-31
      • 2011-04-02
      相关资源
      最近更新 更多