在显示并解除模式视图控制器UIImagePickerController后,我的Cocos2d iPhone应用程序不会';我再也看不到多重接触了

在显示并解除模式视图控制器UIImagePickerController后,我的Cocos2d iPhone应用程序不会';我再也看不到多重接触了,iphone,uiimagepickercontroller,multi-touch,Iphone,Uiimagepickercontroller,Multi Touch,我有一个应用程序,我在其中显示照片选择器(UIImagePickerController),但在用户取消它后,只有单次触摸才起作用。我想我知道问题的根源,但我不知道如何解决它。。。在显示模式对话框之前,触摸过程中的堆栈如下所示: ... #3 0x00074de0 in -[EAGLView touchesBegan:withEvent:] at EAGLView.m:289 #4 0x30910f33 in -[UIWindow _sendTouchesForEvent:] ... 以及关

我有一个应用程序,我在其中显示照片选择器(UIImagePickerController),但在用户取消它后,只有单次触摸才起作用。我想我知道问题的根源,但我不知道如何解决它。。。在显示模式对话框之前,触摸过程中的堆栈如下所示:

... #3 0x00074de0 in -[EAGLView touchesBegan:withEvent:] at EAGLView.m:289 #4 0x30910f33 in -[UIWindow _sendTouchesForEvent:] ... 以及关闭对话框的代码:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)imagePickerController
{
    // Dismiss the image selection
    [pickerViewController dismissModalViewControllerAnimated:YES];
    [pickerViewController.view removeFromSuperview];

    // HERE... IS THERE MORE WORK TO BE DONE TO COMPLETELY REMOVE THE PICKER VIEW????
}

在清理picker视图时,我一定遗漏了什么。。。非常感谢您的帮助:)

在从根窗口向下调查视图层次结构后,我发现在取消照片选择器后,我的viewController的视图被添加为UITransitionView下的子视图,因此解决方案是删除我的viewController视图的superview:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)imagePickerController
{
    // Dismiss the image selection
    [pickerViewController dismissModalViewControllerAnimated:YES];
    [pickerViewController.view.superview removeFromSuperview];
}

我注意到CJ Hanson的解决方案在iPhone上对我有效:

[pickerViewController.view.superview removeFromSuperview];
但不是在iPad上。通常的方式是:

[pickerViewController.view removeFromSuperview];
在iPad上工作。我现在只是打电话给他们两个,看起来效果不错:

[pickerViewController.view removeFromSuperview];
[pickerViewController.view.superview removeFromSuperview];

也许有更多知识的人可以澄清为什么需要这样做?

您确定需要执行addSubView吗?我不认为这是必要的,我会尝试移除它,看看它是否导致了奇怪的行为。是的,去掉那个部分不会显示对话。因为“self”不是viewController,而且我的应用程序不使用viewController,所以我必须制作一个,并将其视图添加到我现有的视图中。解决了这个问题,您的解决方案修复了它。很久以来我一直在挠头。
[pickerViewController.view removeFromSuperview];
[pickerViewController.view removeFromSuperview];
[pickerViewController.view.superview removeFromSuperview];