2012-05-04 22 views
5

Tôi đã rút ra rất nhiều hồ quang sử dụng mã dưới đây:có được điểm Touch trong Arc được vẽ bởi CGContext

CGContextAddArc(context, 
         e.x, 
         e.y, 
         Distance/2, 
         M_PI+angle1, 
         angle1, 
         aClock); 
     CGContextStrokePath(context) 

Bây giờ tôi muốn rằng khi tôi chạm vào bất kỳ vòm Tôi muốn phát hiện rằng đó hồ quang đã được chạm

Tôi có thể làm như thế nào?

+0

sử dụng các phương pháp cũ để liên lạc (touchbegan, touchmoved, toucheended) để phát hiện vị trí trên màn hình cảm ứng xảy ra sau đó tìm những gì gần. – SpaceDog

Trả lời

0

Bạn có thể làm như thế này:

1.add arc của bạn đến một con đường,

_path = CGPathCreateMutable(); 
CGPathAddArc(_path, NULL, e.x, e.y, Distance/2, M_PI + angle1, angle1, aClock); 
CGContextAddPath(context, _path); 
CGContextStrokePath(context); 

2.rewrite touchesBegan: withEvent:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSSet *allTouches = [event allTouches]; 
    UITouch *touch = [allTouches anyObject]; 
    CGPoint point = [touch locationInView:[touch view]]; 

    if (CGPathContainsPoint(_path, NULL, point, NO)) { 
     NSLog(@"point:(%f, %f), Touch arc.", point.x, point.y); 
    } 
    else { 
     NSLog(@"point:(%f, %f), Touch other.", point.x, point.y); 
    } 
} 

Bạn sẽ thấy " Chạm vào vòng cung. " đăng nhập khi chạm vào vòng cung.

Các vấn đề liên quan