0

当按下从前向后翻转相机的按钮时,我的 UIImagePickerController 冻结并且相机关闭。这就是我如何从方法中初始化项目中的图像选择器控制器对象(省略其余代码),因为它与 UIimagepickercontroller 对象无关。

//In my .h file 
UIImagePickerController * imgPicker;

//in my .m file
-(void)viewDidLoad {

imgPicker = [[UIImagePickerController alloc] init];
imgPicker.delegate = self;
imgPicker.allowsEditing = YES;

}

-(void) takePicture {

imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imgPicker animated:YES completion:NULL];

}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{

masterImage.image = [info objectForKey:UIImagePickerControllerEditedImage];

if(masterImage.image == nil) {

    masterImage.image = [info objectForKey:UIImagePickerControllerEditedImage];

}

[self dismissModalViewControllerAnimated:YES];

}

-(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker{

[self dismissModalViewControllerAnimated:YES];

}

-(void) releaseOutlets {

[imgPicker release];

}
4

2 回答 2

1

只是为了规则,更改您的代码。代替:

UIImagePickerController * imgPicker;

在您的 .h 文件中写入:

@property (nonatomic, strong) UIImagePickerController * imgPicker;

而不是在你的 .m 文件中合成它:

imgPicker = _imgPicker;

接下来每次调用这个属性调用 self.

于 2012-11-03T20:07:28.997 回答
-2
  • 首先,您不应该在 viewdidload 方法中分配 init。在 -init 方法中进行所有分配。
  • 按照 edzio27 的建议添加属性。
  • 再次测试

如果问题仍然存在: - 检查您是否“收到内存警告”。如果出现内存警告,您的 viewdidload 方法会再次被调用。如果您将您的 alloc init 保留在该方法中,您将每次都创建新实例。

我们遇到了与 MPMoviePlayerController 类似的问题。不知道你是否有同样的问题。

于 2012-11-03T20:20:20.303 回答