我有一個UIView作爲子視圖添加到我的視圖控制器。在這個觀點上,我繪製了一條更加緩慢的道路。我的drawRect實現低於檢測貝塞爾路徑內的水龍頭
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
UIBezierPath *bpath = [UIBezierPath bezierPath];
[bpath moveToPoint:CGPointMake(50, 50)];
[bpath addLineToPoint:CGPointMake(100, 50)];
[bpath addLineToPoint:CGPointMake(100, 100)];
[bpath addLineToPoint:CGPointMake(50, 100)];
[bpath closePath];
CGContextAddPath(context, bpath.CGPath);
CGContextSetStrokeColorWithColor(context,[UIColor blackColor].CGColor);
CGContextSetLineWidth(context, 2.5);
CGContextStrokePath(context);
UIColor *fillColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.5 alpha:0.7];
[fillColor setFill];
[bpath fill];
}
我要檢測這種貝塞爾路徑,但不點,這是UIView的內部和外部的路徑裏面水龍頭。例如,在這種情況下,如果我的觸摸座標是(10,10),則不應該檢測到它。我知道關於CGContextPathContainsPoint,但當觸摸在路徑中時它不起作用。有沒有辦法檢測貝塞爾路徑內的觸摸事件?
也許您需要添加'CGPathCloseSubpath'。我已經更新了我的答案。請檢查。 – Avt
「檢測不在UIView內部的這個貝塞爾路徑中的tap」這個貝塞爾路徑是在UIView內部繪製的,所以如何在它內部但不在UIView內部的水龍頭? – matt
@matt:編輯問題 – blancos