2011-04-23 12 views

Respuesta

2

Lo siguiente funciona, pero no estoy seguro de si es la mejor manera de hacerlo. Aunque creo que sí.

Dado que todos thumbViews tener una anchura de kThumbSize, sólo comprobar en touchesEnded que la coordenada x de la locationInView de la (self.multipleTouchEnabled = NO suponiendo) UITouch ejemplo es menor que o igual a kThumbSize. Esto significa que los toques terminaron dentro del thumbView. No es necesario verificar la coordenada y porque si los toques se mueven verticalmente, el tableView, que contiene el thumbViews, se desplaza y los toques se cancelan.

hacer lo siguiente ThumbView : UIView (cuyas instancias son subvistas de un UITableView):

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesEnded %@", touches); 
    CGPoint touchPoint = [[touches anyObject] /* only one */ locationInView:self]; 
    if (touchPoint.x >= 0.0f && touchPoint.x <= kThumbSize) { 
     [(ThumbsTableViewCell *)self.superview.superview thumbTouched:self]; 
    } 
} 

Para único registro toques en una thumbView a la vez, también, probablemente, desea establecer self.exclusiveTouch = YES; en el método init instancia de ThumbView.

+1

Puede escribir mejor código haciendo esto: 'if (CGRectContainsPoint (self.bounds, touchPoint)) {...}'. :) – BastiBen

Cuestiones relacionadas