7

我怎么知道触摸点 (touchesBegan) 是否在隐藏的 UIBezierPath 上?

4

1 回答 1

10
[bezierPath containsPoint:touchPoint];

只需确保您的触摸点与 bezierPaths 点位于相同的坐标系中,并且这些点位于相同的上下文中,即都在屏幕空间中。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];
    if ([self.bezierPath containsPoint:touchPoint])
    {
        // do stuff
    }
}

另请注意:如果您在某些 CoreGraphics 绘图中使用 UIBezierPath,您将需要翻转 touchPoint 上的 y 轴,例如...

touchPoint.y = self.view.bounds.size.height - touchPoint.y;

于 2012-05-31T10:05:40.953 回答