允许用户在非矩形UIView内容之外进行交互

时间:2012-07-17 12:16:22

标签: objective-c uiview uiimageview cgpath user-interaction

在显示圆形图像(需要保持交互式)的UIView上,如何防止圆圈外的区域接收任何用户交互,因此该视图下的其他ui仍然处于活动状态?

我尝试使用CGPath屏蔽UIView,但这没有用。enter image description here

任何想法?

2 个答案:

答案 0 :(得分:1)

由于触摸事件在视图层次结构中向下冒泡,作为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;
}

答案 1 :(得分:0)

不要将任何接收UI事件的元素放在圆圈之外。 如果这是不可避免的,那么只要你需要就禁用圆圈外的所有元素。