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 に答える