【问题标题】:UIImagePickerControllerCameraDeviceFront only works every other timeUIImagePickerControllerCameraDeviceFront 每隔一段时间才有效
【发布时间】:2012-06-10 07:54:14
【问题描述】:

在我的应用程序中,我尝试在UIImagePicker 中默认使用前置摄像头。我知道,看起来很简单……

imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront;

现在,我第一次启动我的拾取器一切工作正常,正面相机被初始化,但是当拾取器被拆除时,使用后面呈现后部相机。从那以后,如果我不断打开和关闭选择器,相机使用的将是:前、后、前、后、前、后...

我已将此代码剥离为选择器的基本知识,试图隔离问题并且问题仍然存在。有没有人遇到过这个问题?任何指针或方向将不胜感激!

编辑:问题解决了!我在viewDidLoad 中调用imagePicker = [[UIImagePickerController alloc] init]; 而不是viewDidAppear

【问题讨论】:

  • 您能否发布一个 sn-p 显示您如何初始化/呈现/关闭控制器? (我想我知道出了什么问题,但如果没有任何基本信息,那就太远了)
  • 我很高兴你找到了罪魁祸首 :) 我也根据你的要求发布了这个作为答案。
  • 谢谢!这也一直困扰着我!谁能解释 viewDidLoad 和 viewDidAppear 之间的初始化区别是什么?

标签: objective-c ios cocoa-touch uiimagepickercontroller


【解决方案1】:

问题必须在于您尝试初始化/呈现/关闭控制器的方式。

那么,为什么要在摄像机之间来回切换?

似乎底层AVCaptureSession 在控制器关闭后由于某种原因继续运行。所以下次你展示它时,它试图添加输入,但它很忙,所以转到下一个可用的(后置摄像头),中断自己(从而释放前一个)等等。

【讨论】:

  • @SamBudda 解决方案是在 viewDidAppear 方法中调用它而不是 viewDidLoad 以便获得一个新的控制器并给它一个释放会话的机会(也有关于 cmets 的解释解决此问题后由 OP 提供)
  • 在这里看到我的问题它仍然没有工作 - stackoverflow.com/questions/14614428/…
  • 确保imagePicker 实际上已发布。我遇到了同样的问题,[imagePicker release](旧的非 ARC 项目)解决了这个问题,允许下次使用正确的相机重新创建图像选择器。
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 2011-01-25
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多