iPhone:UIImagePickerControllerDelegate方法不被调用?

我有一个基于UIImagePickerController的相机控制器:

 @interface CameraController : UIImagePickerController <UIImagePickerControllerDelegate> // <UIImagePickerControllerDelegate, UINavigationControllerDelegate> { } @end 

初始化会产生一个警告: UINavigationControllerDelegate没有被执行(因为我不想让我的对象成为这个委托):

 - (id) init { if(!(self = [super init])) return nil; super.sourceType = UIImagePickerControllerSourceTypeCamera; // Commenting delegat does not help super.delegate = self; return self; } 

尽pipe是UIImagePickerControllerDelegate委托, imagePickerController:didFinishPickingMediaWithInfo: 被调用。 我也validation了另外两个委托方法也没有被调用。

如果我声称坚持UINavigationControllerDelegateimagePickerController:didFinishPickingMediaWith 调用,但我崩溃了dismissModalViewControllerAnimated

 - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { ASSERT_VALID(picker); ASSERT_VALID(info); // Commenting does not help [picker autorelease]; UIImage* image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; ASSERT_VALID(image); // Image processing commented out // super.delegate = nil; // picker.delegate = nil; // [self dismissModalViewControllerAnimated:YES]; // [super dismissModalViewControllerAnimated:YES]; // [self performSelector:@selector(dismissModalViewControllerAnimated:) withObject:nil afterDelay:0.0f]; // [self dismissModalViewControllerAnimated:NO]; // [super dismissModalViewControllerAnimated:NO]; [self performSelector:@selector(dismissModalViewControllerAnimated:) withObject:nil afterDelay:0.5f]; } 

我已经看过这个CURSED视图控制器的许多职位。 最接近, UIImagePickerControllerDelegate没有正确响应和iPhone – UIImagePickerControllerDelegateinheritance ,没有帮助。

任何想法可能是这次? 有两个问题立即浮现在脑海中:(1) UINavigationControllerDelegate与图像调用我的callback有什么关系?(2)为什么这个对象不能正确清理?

提前致谢,

杰夫

UIImagePickerController类不应该被分类。 参考手册说:

这个类的目的是按原样使用,不支持子类。

而且没有理由。 只需创build一个UIViewController的子类并实现委托。

我已经成功地使用了很多次。 我一直声明,我的视图控制器实现UINavigationControllerDelegate但尚未实现此协议的任何方法。