9
votes

iPhone: détecter deux doigts

J'ai besoin de détecter deux doigts tactile. Si je touche l'écran avec deux doigts en même temps, alors tout va bien. Il suffit d'utiliser ce code: xxx

mais ce code ne fonctionne pas si je tiens un doigt, puis touchez l'écran avec un autre doigt. Comment implémenter cela? Est-ce difficile à faire?


0 commentaires

3 Réponses :


1
votes

Quel est le véritable objet qui reçoit l'événement? Cet objet peut obtenir votre événement tactile et non l'uirespondérateur de base.

Par exemple, si vous êtes à l'intérieur d'un UISCROODEVIEW, vous pouvez obtenir la seconde:
- (UIView *) ViewforzoomingScrollView: (Uiscrollview *) Scrollview;


1 commentaires

Merci, mais je n'ai pas besoin de zoom. Je veux juste que tout met en œuvre avec Touchesbegan, TouchesMoved, Touchsied. Cette méthode renvoie uiview de sorte que cela ne me convient pas.



19
votes

Assurez-vous que l'UIView a multiplatouchenabled = YES , la valeur par défaut est non .

EDIT: Je vois quel est le problème. À Touxbegan: WithEvent :, Vous n'obtiendrez que les nouvelles touches. Vous n'obtenez pas toutes les touches actives. Il est très improbable, si possible, que vous obtiendrez plus d'une touche pour commencer à la fois. Pour vérifier, il y a plus d'une touche active int touchesbegan: essayez ceci: xxx


7 commentaires

Merci, mais pas aide. J'ai ajouté pour afficher le contrôleur: [Self.View SetMultiPtouchenAcédée: Oui]; J'ai même ajouté à des fins de test [Self SetMultiPlenouchenabled: Oui] à Touxbegan.


Où avez-vous ajouté [Self.View SetMultiPtouchenAcédée: Oui]?


Merci de rejouer. J'ajoute [Self.View SetMultiPléchenAcédée: Oui] dans la vue ViewDiDload


C'est le bon endroit. Self.View (la vue du contrôleur) est-elle celle qui reçoit les touches? Y a-t-il une sous-vision?


Non, je n'utilise aucun autre sous-assisté. Votre projet peut télécharger un projet simple à partir de dl.dropbox.com/u/11760459/Touch.zip < / a>. Le problème: alors je tiens un doigt et touchez un autre doigt ToucheBegan déclenché uniquement pour un doigt.


Problème mineure, mais vous voudriez changer de toucheforview: auto avec Touchsforview: Self.View


La méthode ToucheBegan: Dustevent: gère les événements à la fois dans la vue et dans le contrôleur. Comme il est (et comme posé dans la question) est la méthode de la vue. Ce n'est pas une erreur, les deux voies sont correctes en fonction de la classe de la méthode de la méthode.



0
votes
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch1, *touch2;
    CGPoint    location1, location2;

    NSSet *allTouches = [event allTouches];
    touch1 = [[allTouches allObjects] objectAtIndex:0];
    location1 = [touch1 locationInView:self];

    if([allTouches count] > 1)
    {
        touch2 = [[allTouches allObjects] objectAtIndex:1];
        location2 = [touch2 locationInView:self];
    }
}

0 commentaires