【发布时间】:2011-07-28 23:52:21
【问题描述】:
我有一个基于 UIImagePickerController 的相机控制器:
@interface CameraController : UIImagePickerController
<UIImagePickerControllerDelegate>
// <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
{
}
@end
Init 生成一个警告,指出 UINavigationControllerDelegate 未实现(这是预期的,因为我不希望我的对象成为那个委托):
- (id) init
{
if(!(self = [super init]))
return nil;
super.sourceType = UIImagePickerControllerSourceTypeCamera;
// Commenting delegat does not help
super.delegate = self;
return self;
}
尽管是UIImagePickerControllerDelegate 代表,imagePickerController:didFinishPickingMediaWithInfo: 没有被调用。我还验证了其他两个委托方法也没有被调用。
如果我确实声称遵守 UINavigationControllerDelegate,imagePickerController: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 not responding properly 和iPhone - UIImagePickerControllerDelegate inheritance 没有帮助。
你有什么想法吗?立即想到两个问题:(1)UINavigationControllerDelegate 与使用图像调用我的回调有什么关系,以及(2)为什么这个对象不能正确清理自己?
提前致谢,
【问题讨论】:
标签: iphone ios uiimagepickercontroller