我正在尝试在启用了完全访问权限的iOS8自定义键盘扩展中嵌入相机。除了覆盖层控件外,一切都按照我的期望工作,但嵌入式UIImagePickerController的视图始终是黑色的。出现“此应用程序想要访问您的相机”弹出窗口,并且确实已经授予权限(三次检查过)。
在XCode中,[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]
返回true, 除了相机本身,UIImagePickerController的界面正常显示(例如相机覆盖控件)。
XCode唯一的错误/警告如下:
对未呈现的视图进行快照会导致空快照。在快照之前或屏幕更新之后,请确保至少呈现过您的视图。
我尝试在相机初始化时添加超时,就像其他stackoverflow线程建议的那样,但是我所做的一切都没有解决这个警告或黑色相机屏幕问题。
- (void)viewDidAppear:(BOOL)animated
{
[self performSelector:@selector(loadCamera) withObject:nil afterDelay:0.3];
}
- (void)loadCamera
{
self._picker = [[UIImagePickerController alloc] init];
self._picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self._picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self._picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self._picker.allowsEditing = NO;
self._picker.showsCameraControls = YES;
self._picker.view.userInteractionEnabled = YES;
self._picker.delegate = self;
self._picker.view.frame = self.view.bounds;
[self.view addSubview:self._picker.view];
[self._picker didMoveToParentViewController:self];
}
我也尝试着将最后三行替换为以下内容,但结果相同:
[self presentViewController:self._picker animated:YES completion:^{ NSLog(@"completed");}];
有人知道在iOS8自定义键盘扩展中是否可以嵌入UIImagePickerController吗?如果可以,那么我可能做错了什么?