Обнаружение касания на UIView - PullRequest
1 голос
/ 18 марта 2011

Привет всем, я нарисовал круговую диаграмму на UIView, используя CGContext из 10 дуг (кусочки или срез).

Но когда я касаюсь 1-й и последней дуг этой круговой диаграммы, я не получаю от них точки касания ... остальные дуги этой круговой диаграммы поддерживают сенсорное событие ....

почему это происходит, я застрял в этом ... пожалуйста, помогите мне ... вытащить это ...

вот мой код

-(void) drawRect:(CGRect)rect
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextSetLineWidth(ctx, 2.0);

float mult = 360/total;
// Draw each pie slice   
float curValue = 0.0f;  

for(int i=0; i< 10; i++)
    {   
    int startAngle = (int)(curValue * mult);  
    int arcAngle = (int)  ([[sorted objectAtIndex:i] floatValue]* mult);   

    // Ensure that rounding errors do not leave a gap between the first and last slice   
    if ( count == [sorted count] ) { arcAngle = 360 - startAngle; }   

    CGContextBeginPath(ctx);  
    CGContextMoveToPoint(ctx, x, y );
    CGContextAddArc(ctx, x, y, r, startAngle * M_PI/180.0, (startAngle * M_PI/180.0) + (arcAngle * M_PI/180), 0);

    CGContextClosePath(ctx);  

    CGContextSetStrokeColorWithColor(ctx, [[UIColor lightGrayColor] CGColor]); 
    CGContextDrawPath(ctx, kCGPathFillStroke );  curValue += [[sorted objectAtIndex:i] floatValue];

    }  
}

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
double startRotationValue = [[[self.layer presentationLayer] valueForKeyPath:@"transform.rotation.z"] doubleValue];
rotation.fromValue = [NSNumber numberWithDouble:startRotationValue];
rotation.toValue = [NSNumber numberWithDouble:startRotationValue+5];
rotation.duration = 2.0;
[self.layer addAnimation:rotation forKey:@"rotating"];
}

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self touchesBegan:touches withEvent:event];
}

Заранее спасибо .......

...