如何检测圆形视图内的触摸

bar*_*nes 3 iphone objective-c ios

在此输入图像描述

我有一个圆形的UIView.我必须只检测紫色圆圈内的触摸.必须忽略圆圈外的所有触摸,例如黑色方形和白色背景.

设置半径和检测触摸将没有任何用处,因为当多个视图在彼此之上具有不同的控制器时,将难以管理.

有什么办法,我可以这样做.请你能给我一些建议.

Anu*_*rag 5

创建一个自定义子类UIView,说明CircularView并覆盖该pointInside:withEvent:方法以忽略位于圆外的点.该子类的一个对象将是自包含的,您可以按照您想要的任何方式进行排列.

要确定圆形区域是否包含点,可以使用核心图形功能CGPathContainsPointcontainsPoint:方法UIBezierPath.这将需要你记住CGPathRef还是UIBezierPath表示Circle对象.在这个例子中,我假设你已经创建了一个循环路径UIBezierPath,它被存储为CircularView类的属性.

@interface CircularView : UIView

// initialize this when appropriate
@propery (nonatomic, strong) UIBezierPath *circularPath;

@end

@implementation CircularView

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    return [circularPath containsPoint:point];
}

@end
Run Code Online (Sandbox Code Playgroud)

就是这样.