iOS 7使用UIImagePickerController拍照两次,第二次会显示静态图像覆盖相机,如何重置相机.
我试着一个接一个地拍照,然后继续拍5张照片。
它在iOS6上工作。
在iOS7上,它第一次工作很好,但是当它第二次拍照时,它会在屏幕上显示一个静态的暗图像,如何清除或重置它的,虽然拍照工作,但用户看不到什么将用相机捕捉。
bool fistTimeToShow = YES;
-(void) viewDidAppear:(BOOL)animated{
if (fistTimeToShow) {
fistTimeToShow = NO;
self.imagePickerController = nil;
[self tackImage];
}
}
-(void)tackImage{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
self.imagePickerController = [[UIImagePickerController alloc]init];
self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePickerController.showsCameraControls = YES;
self.imagePickerController.delegate = self;
[self presentViewController:self.imagePickerController animated:NO completion:nil];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSLog(@"====== imagePickerController:didFinishPickingMediaWithInfo ======");
[self.imagePickerController dismissViewControllerAnimated:NO completion:nil];
//...deal with the image capture...
self.imagePickerController = nil;
[self tackImage];
}更新
我改变解散函数,将[self tackImage];放在块中。现在它总是显示出拍摄的第一个图像。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSLog(@"====== imagePicker: didFinish ======");
self.imagePickerController = nil;
[self dismissViewControllerAnimated:NO completion: ^{
[self tackImage];
}];
}我想找个办法把图像弄清楚。但我还不知道图像保存在哪里。
Update2
使用
[self performSelector:@selector(presentCameraView) withObject:nil afterDelay:1.0f];和功能
-(void)presentCameraView{
[self presentViewController:self.imagePickerController animated:NO completion:nil];
}来代替。[self presentViewController:self.imagePickerController animated:NO completion:nil];它无论如何在我的设备上工作,但我甚至不知道为什么。
Update3
为了避免其他问题,我已经将userInteractionEnabled设置为NO时Delay:1.0f,并且可能还需要将navigationBar和tabBar设置为专用。
发布于 2013-12-29 07:15:13
在使用iOS 7的Xamarin.iOS中,我遇到了完全相同的问题。
有帮助的是,在didFinishPickingMediaWithInfo方法中添加了didFinishPickingMediaWithInfo。在C#中,GC.Collect()“清除”未使用/已释放对象中的内存。
当然,在Obj中没有直接的对应关系,但这可能也会说明您的问题(可能与内存有关)。
https://stackoverflow.com/questions/18998190
复制相似问题