【发布时间】:2012-07-17 12:16:21
【问题描述】:
在显示圆形图像(需要保持交互)的 UIView 上,您将如何防止圆形之外的区域接收任何用户交互,以便该视图下的其他 ui 仍然处于活动状态?
我尝试用 CGPath 屏蔽 UIView,但没有帮助。
有什么想法吗?
【问题讨论】:
标签: objective-c uiview uiimageview cgpath user-interaction
在显示圆形图像(需要保持交互)的 UIView 上,您将如何防止圆形之外的区域接收任何用户交互,以便该视图下的其他 ui 仍然处于活动状态?
我尝试用 CGPath 屏蔽 UIView,但没有帮助。
有什么想法吗?
【问题讨论】:
标签: objective-c uiview uiimageview cgpath user-interaction
由于触摸事件在视图层次结构中向下冒泡,作为 UIView,您可以检查触摸事件是否与您相关,如果它不只是返回 NO 并且该事件将向下传递到层次结构中的下一个 UIView
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
for (UIView * view in [self subviews]) {
if ([view pointInside:[self convertPoint:point toView:view] withEvent:event]) {
return YES;
}
}
return NO;
}
【讨论】:
不要将任何接收 UI 事件的元素放在圈外。 如果这是不可避免的,那么只要您需要,只要禁用圆圈外的所有元素即可。
【讨论】:
UIView 上将交互设置为 false,只在您不想与之交互的组件上设置。我很确定没有任何非解决方法(取决于您对解决方法的定义)。