最近写一个调用系统相册和系统相机的功能,其实很简单,然后自己实现一遍的时候出现了一个问题,如下:
在需要调用系统相册与相机的时候弹出一个actionSheet,
然后在actionSheetDelegate里面找了个clickedButtonAtIndex方法就写
了点击事件,运行iPhone模拟器,一切都显得那么OK,然而
运行ipad模拟器的时候,点击没有效果,console里面报了一个错
Warning: Attempt to present <UIImagePickerController:
0x7a085000> on <ViewController: 0x79863ba0> which is
already presenting <UIAlertController: 0x7873b4b0>
很容易理解,但是当时真没有细看,翻译一下
警告:尝试在已经呈现了一个UIAlertController
的viewController上呈现UIImagePickerController.
这里的UIAlertController就是指的已经弹出的actionSheet
控制器。
所以真相大白了,解决方案就是把clickedButtonAtIndex方法改为didDismissWithButtonIndex,这样present imagePickerController的时候actionSheet就已经不存在了,上面的冲突也就不存在了。
至于为何iPhone上不存在问题而ipad上有此问题,希望大神能跟帖留言,给出答案,也能实现我抛砖引玉的美好愿望。
* 附:最近遇到了一个让我困扰很久的bug,也在这里贴一下:
目前这个项目是ipad项目,因为需要写死横屏,然而
在imagePickerController这个只支持竖屏的玩意儿调用
结束,给它dismiss掉的时候,程序立马崩掉,始终不得解。