touchesEnded pas appelée??? ou au hasard d'être appelé
Si je lève mon doigt vers le haut sur le premier contact, puis il va reconnaître le côté tactile de l'amende juste. C'est seulement quand je tiens ma première touche enfoncée, puis d'essayer et toucher une zone différente avec un autre doigt en même temps. Il sera alors incorrectement registre que la deuxième touche de la première touche de nouveau.
Mise à jour Il a quelque chose à voir avec touchesEnded pas être appelé jusqu'à la DERNIÈRE touche a terminé (il ne se soucie pas si vous avez déjà eu 5 autres touches de la fin avant de finalement se laisser aller de la dernière... elle les appelle tous à la fin une fois la dernière touche à ses extrémités)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
NSString* filename = [listOfStuff objectAtIndex:[touch view].tag];
//do something with the filename now
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
ITouch* touch = [touches anyObject];
NSString* buttonPressed = [listOfStuff objectAtIndex:[touch view].tag];
//do something with this info now
}
Vladimir, auriez-vous l'esprit de l'affichage de votre exemple de code quelque part pour que je puisse voir ce qui diffère? Quelle que soit la raison, tous mes touchesEnded sont appelé par la suite sur tout en même temps, plutôt qu'au moment où elles se produisent réellement
Par la façon dont, dans mon programme, les touches sont sur UIImageViews qui sont à l'intérieur d'un scrollview et tout cela est à l'intérieur d'une UIView si cela fait une différence
Vladimir, Pourrait-il avoir quelque chose à faire avec tous les UIImageViews être dans un scrollview? En dehors de la scrollview ils ne fine et envoyer le touchesEnded message immédiatement, mais à l'intérieur de la scrollview ils ne pas envoyer le message immédiatement. Cela est-il quelque peu ralenti ou n'est-il pas envoyé le répondeur de la chaîne correctement?
OriginalL'auteur iwasrobbed | 2010-04-28
Vous devez vous connecter pour publier un commentaire.
J'ai eu aujourd'hui (ou plutôt j'ai eu ce problème sous-évaluées sur moi aujourd'hui!).
Ce que j'ai vu qui se passe:
Comme Gavin Clifton dit, il se produit uniquement si vous ajoutez un geste de reconnaissance. Sans une reconnaissance ajouté, touchesEnded incendies après chaque doigt. Qui serait formidable si je n'ai pas besoin d'utiliser des modules de reconnaissance...!!!
J'ai résolu ce problème en ajoutant gestureRotation.delaysTouchesEnded = FALSE; à ma reconnaissance création/ajout de code:
Maintenant les gestes de travail, et touchesBegan pas de files d'attente plus longues!
OriginalL'auteur Jamie Lowes
Pour quelque raison que ce soit, touchesEnded est retardée seulement lorsque le contact est à l'intérieur de la scrollview. Si vous avez un) désactiver le scrollview de défilement; ou b) ne pas utiliser un scrollview, puis touchesEnded est livré immédiatement.
J'ai entendu des gens qui ont intercepté sendEvent, mais qui semble louche pour moi et je ne veux vraiment pas à visser le répondeur de la chaîne depuis sendEvent gère un tas d'événements.
D'autres idées? Quelqu'un a sous-classé UIWindow pour essayer d'intercepter la touche de cette façon? N'importe quelle entrée vous pouvez fournir est apprécié.
OriginalL'auteur iwasrobbed
La scrollview a une propriété
delaysContentTouches
qui est fixé àYES
par défaut. Il va retarder tous les événements jusqu'à ce qu'il détermine un mouvement de défilement.OriginalL'auteur Ovidiu
Je sais que cette question est un peu vieux, mais je pensais que je voudrais partager mon expérience pour ceux qui bute sur ce fil, à la recherche d'une réponse, comme je viens de l'avoir.
J'ai été aux prises avec ce problème pendant quelques heures, et la seule solution que je pouvais trouver était de supprimer les UIGestureRecognizer les objets que j'utilise.
Pour ma configuration, j'ai été à l'aide de pan et appuyez sur modules de reconnaissance de la capture de ces gestes, et à l'aide de touchesBegan et touchesEnded pour tous types d'événements tactiles. Il n'était pas jusqu'à ce que j'ai enlevé le UIGestureRecognizer objets que l'touchesEnded méthode commencé à avoir appelé à nouveau pour la deuxième touche de fin. Plus précisément, il a été le pan de reconnaissance qui a été l'origine de ces problèmes.
Je ne suis pas totalement sûr si cela s'applique dans ce cas, mais il résolu les problèmes que j'avais.
OriginalL'auteur Gavin Clifton
Ensemble
multipleTouchEnabled
.Dans Interface Builder, c'est le "Multi Touch" case à cocher sous "l'Interaction de l'Utilisateur est Activée."
Tant pis, juste vérifié que tous ont été activés et bien sûr multipleTouchEnabled est OUI pour tous 🙁 Pourrait-il avoir quelque chose à faire avec tous les UIImageViews être dans un scrollview? En dehors de la scrollview ils le font très bien, mais à l'intérieur de la scrollview ils ne pas envoyer le message immédiatement.
OriginalL'auteur Steven Fisher
Je viens d'avoir ce problème, où un
touchesEnded
ne serait jamais appelé sur un bouton à l'intérieur d'un ScrollView. Basé sur Ovidiu réponse, j'ai découvert que la configuration manuelle de l'ContentOffset de mon ScrollView a été à l'origine du problème. Sans doute avoir la contentOffset définir la façon dont je l'ai eu a été la confusion entre le ScrollView si j'ai essayé d'appuyer sur le bouton ou faites défiler l'affichage.Laisser le décalage séjour à
0,0
fait le problème.OriginalL'auteur Nerrolken
J'ai trouvé une autre option.
Après
touchesBegan
etCGPoint
pas déplacé selontouchesMoved
,touchesCancelled
appelé.Toutefois, Si
CGPoint
changé selontouchesMoved
,touchesEnded
appelé.OriginalL'auteur Seungyoun Yi