2010-07-22 4 views
2

- (void) touchesBegan: (NSSet *) toucheEvénement: (événement UIEvent *) { NSLog (@ "touches"); }touchesBegan ne répond pas

La méthode ci-dessus n'appelle pas dans mes applications. Ma description de l'application est comme ci-dessous. J'ai un MainViewController qui charge ContentViewController dedans. ContentViewController a un webview qui charge un fichier pdf.

Comment écouter le robinet de MainViewController's Voir.

Cordialement.

+0

Cette réponse est utile: http : //stackoverflow.com/a/7808238/790198 – Nianliang

Répondre

3

Je ne suis peut-être pas précis à 100%, mais si vous placez -touchesBegan:withEvent: dans votre contrôleur de vue (ou sa vue principale), vous n'obtiendrez que les touches qui n'ont pas été traitées par la sous-vue. Pour intercepter toutes les touches que vous devez utiliser la sous-classe UIView pour votre point de vue du contrôleur et passer outre hitTest:withEvent: méthode en elle:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    touchedView = [super hitTest:point withEvent:event]; 
    NSSet* touches = [event allTouches]; 
    // handle touches if you need 
    return touchedView; 
} 

Pour plus d'informations, voir Event delivery section « guide Gestion des événements » pour iOS

+1

Réponse mise à jour avec le lien vers l'explication de la gestion des événements dans les documents Apple - il semble qu'il confirme ma réponse – Vladimir

+0

Je l'ai fait. Ça marche. Mais maintenant UIWebView a cessé de fonctionner. – TechBee

+1

Qu'est-ce qui ne fonctionne pas exactement? Renvoyez-vous la vue correcte de la méthode hitTest? – Vladimir