iOS:调用dismissModalViewController后,屏幕不再接收触摸

iOS:调用dismissModalViewController后,屏幕不再接收触摸,ios,uiimagepickercontroller,modalviewcontroller,Ios,Uiimagepickercontroller,Modalviewcontroller,我有两种看法。非常简单的设置,只是为了玩相机辊 一个视图将使用以下方式显示摄影机卷: [self presentViewController:self.imagePicker animated:NO completion:nil]; 由ui按钮触发。它打开摄像机,一切正常 拍照后,我打电话给以下人员以解除控制器: [self dismissViewControllerAnimated:NO completion:nil]; 同样,一切都在运转 但是在模式视图关闭后,调出图像采集器控制

我有两种看法。非常简单的设置,只是为了玩相机辊

一个视图将使用以下方式显示摄影机卷:

[self presentViewController:self.imagePicker animated:NO completion:nil];    
ui按钮
触发。它打开摄像机,一切正常

拍照后,我打电话给以下人员以解除控制器:

[self dismissViewControllerAnimated:NO completion:nil];
同样,一切都在运转

但是在模式视图关闭后,调出
图像采集器
控制器的视图不再接收触摸(按钮将不再调出相机)

只有当我切换到另一个视图并返回时,它才会再次开始接收触摸

我一直在寻找解决这个问题的办法,但没有找到任何成功的办法。提前谢谢

编辑(添加代码):

在CameraController.m中

这是调出相机卷的地方

(UIViewController的子类符合

在OverlyCameraview.m中

//Camera Overlay Class (Subclass of UIView)

- (id)initWithFrame:(CGRect)frame andTheCameraController:(CameraController*)cameraController
{
    if ((self = [super initWithFrame:frame]))
    {
        self.camera = cameraController;
    //.…2 UIButtons set up

    }
    return self;
}

//Overlay Cancel Button
- (void) cancel
{  
   [self.camera dismissViewControllerAnimated:NO completion:nil];
}

//Overlay Take Picture Button
- (void) takeAPicture
{
    [self.camera.imagePicker takePicture];
}

您应该通过
UIImagePickerControllerDelegate
方法在选择器not
self
上调用
dismissViewControllerAnimated

[picker dismissViewControllerAnimated:NO completion:nil];
或者,如果您保留对它的引用:

[self.imagePicker dismissViewControllerAnimated:NO completion:nil];
编辑:

根据修订后的守则,我相信

self.imagePicker.cameraOverlayView = cameraOverlay;
应该是:

self.imagePicker.cameraOverlayView = cameraOverlay.view;
此外,如果不使用ARC,这将导致+2参考计数并泄漏:

self.imagePicker = [[UIImagePickerController alloc] init];
它应该用于正确的参考计数:

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
self.imagePicker = picker;
[picker release];

模式解除后,将有关按钮的信息记录到控制台。按钮的框架是否移位?按钮的框架与按钮的约束匹配吗?@bilobatum我刚检查过。按钮的框架在前后都是相同的。谢谢。谢谢,我试过以上两种方法,但都不管用。我试图在
touchsbegind
中执行
NSLog
。视图之前确实收到触摸,但在控制器被解除后,该方法不再被调用。然后,您需要发布更多代码,因为您正在执行其他操作以禁用视图。根据新代码进行了一些编辑。如果有帮助,请告诉我。我会继续尝试。顺便说一句,我用的是ARC。
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
self.imagePicker = picker;
[picker release];