【发布时间】:2013-12-11 12:54:49
【问题描述】:
即使我将 userInteractionsEnabled 设置为 NO 并且我的覆盖框显然没有与按钮重叠,我也无法单击它们。
代码:
// Init Picker
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
//Create camera overlay for square pictures
CGFloat navigationBarHeight = picker.navigationBar.bounds.size.height + 25;
CGFloat height = picker.view.bounds.size.height - 2 * navigationBarHeight;
CGFloat width = picker.view.bounds.size.width;
CGRect f = CGRectMake(0, navigationBarHeight, width, height);
CGFloat barHeight = (f.size.height - f.size.width) / 2;
UIGraphicsBeginImageContext(f.size);
[[UIColor colorWithRed:0 green:0 blue:0 alpha:0.7] set];
UIRectFillUsingBlendMode(CGRectMake(0, 0, f.size.width, barHeight), kCGBlendModeNormal);
UIRectFillUsingBlendMode(CGRectMake(0, f.size.height - barHeight, f.size.width, barHeight - 4), kCGBlendModeNormal);
UIImage *overlayImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *overlayIV = [[UIImageView alloc] initWithFrame:f];
// Disable all user interaction on overlay
[overlayIV setUserInteractionEnabled:NO];
[overlayIV setExclusiveTouch:NO];
[overlayIV setMultipleTouchEnabled:NO];
// Map generated image to overlay
overlayIV.image = overlayImage;
// Present Picker
picker.modalPresentationStyle = UIModalPresentationCurrentContext;
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) {
picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
}
[picker.cameraOverlayView addSubview:overlayIV];
[self presentViewController:picker animated:YES completion:nil];
有什么想法吗?
【问题讨论】:
-
您将按钮的 userInteractionsEnabled 设置为 NO?那是错误的。另一个想法是你的按钮框架太小了。这将绘制按钮,但它们将不可触摸。
-
您在哪里设置了按钮或整个视图中的 userInteractionEnabled。在这两种情况下,它都不起作用。首先,您可能有想法,其次,如果视图不可访问,那么如何访问视图的子视图
-
我添加了上面的代码。如您所见,我只将 setUserInteractionEnabled 设置为覆盖。这些按钮来自 iOS 提供的库存 UIImagePickerController。如果我不使用叠加层,它们就可以工作。
-
解决了!我不得不将:
[picker.cameraOverlayView addSubview:overlayIV];更改为:picker.cameraOverlayView = overlayIV;感谢各位的帮助!
标签: ios iphone ios7 uiimagepickercontroller