2010-01-13 14 views
1

J'ai un UIView simple utilisé comme conteneur. Si je vous écris ce code:touchesForView dans hitTest

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 

    UIView *hitView = [super hitTest:point withEvent:event]; 

    NSSet *sTouches = [event touchesForView:self]; 

    NSLog(@"Touches %d", [sTouches count]); 

    return self; 
} 

ne fonctionne pas! Je voudrais avoir des touches compte dans le message hitTest(), avant touchesBegan()! Est-ce possible?

J'ai cette hiérarchie:

UIView 
    +---> UIScrollView 

Quand touche sur mon UIView (simple pression) le conteneur se déplace. Lorsque je double-touche (deux doigts) sur mon UIView, l'enfant UIScrollView ne fonctionne pas pour Zoom (par exemple). J'ai donc pensé à attraper le nombre de touches.

Si le nombre de touches est égal à un, hitTest sur mon retour de conteneur UIView "self". Sinon, si le nombre de touches est bon pour un (== 2), hitTest renvoie le pointeur "scrollview". En d'autres termes, j'aimerais attraper un événement à deux doigts dans le message/l'événement hitTest().

Répondre

1

hitTest est utilisé par le cadre pour déterminer quelle vue est frappé, et donc quelle vue d'envoyer les touchesBegan/touchesMoved/touchesEnded/touchesCancelled messages. Au point hitTest est appelé, vous ne pouvez pas le dire. Peut-être que vous pourriez expliquer ce que vous essayez d'accomplir, parce que cela ne semble pas être la bonne façon de le faire.

+0

Ok, j'ai cette hiérarchie: UIView ---> UIScrollView Quand touche sur mon UIView (simple pression) le conteneur se déplace. Lorsque je double-touche sur mon UIView, l'enfant UIScrollView ne fonctionne pas pour Zoom (par exemple). J'ai donc pensé à attraper le nombre de touches. Si touch number est égal à un, hitTest sur mon conteneur UIView retourne "self". Sinon, si le nombre de touches est bon pour un (== 2), hitTest retourne "scrollview". – Undolog