带有cameraOverlayView的UIImagePickerController在点击叠加中的button时进行聚焦

我是新来的目标C,这是我在这里发布的第一个问题,所以这可能是世界上最简单的问题来回答,但我无法弄清楚这个问题。

我正在尝试创build一个使用相机的iOS应用程序。 我正在使用UIImagePickerController类来显示相机和拍照,但我创build了一个自定义UIView,其中包含一堆UIButton实例覆盖相机预览帧,使用cameraOverlayView属性。 我正在使用这种方法把相机放在屏幕上:

- (BOOL) startCameraControllerFromViewController: (UIImagePickerController*) imagePickerController usingDelegate: (id <UIImagePickerControllerDelegate, UINavigationControllerDelegate>) imagePickerControllerDelegate { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera] == NO) || (imagePickerController == nil) || (imagePickerControllerDelegate == nil)) return NO; imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; imagePickerController.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil]; imagePickerController.allowsEditing = NO; imagePickerController.showsCameraControls = NO; imagePickerController.wantsFullScreenLayout = YES; imagePickerController.delegate = imagePickerControllerDelegate; self.cameraOverlayViewController = [[CameraOverlayViewController alloc] initWithImagePickerControllerDelegate:imagePickerController nibName:@"CameraOverlayView" bundle:nil]; self.cameraOverlayViewController.view.frame = CGRectMake(0, 0, imagePickerController.view.frame.size.width, imagePickerController.view.frame.size.height); imagePickerController.cameraOverlayView = self.cameraOverlayViewController.view; [self presentViewController:imagePickerController animated:self.showCameraAnimation completion:^(void) { [self.view bringSubviewToFront:self.cameraOverlayViewController.view]; }]; return YES; 

}

当我按下位于相机预览窗口顶部的button时,相应的IBAction被触发,但下方的相机视图也被轻敲并重新聚焦。 所以每次按下button之前,我都必须手动重新调整相机预览,然后才能拍摄照片。 正如你可以看到我试图使用bringSubViewToFront :,但这似乎并没有工作。

当我点击cameraOverlayView上的button时,如何防止相机聚焦?

thnx的帮助!

添加到您的代码: hitTest:withEvent:

 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *hittedView = [super hitTest:point withEvent:event]; return hittedView == self.button ? hittedView : nil; } 

我提到这个: UserInteraction仅支持子视图 。 我testing了代码。 它的工作原理!