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
方法在选择器notself
上调用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];