2010-02-02 3 views
2

Je développe actuellement une application où j'ai une vue principale avec beaucoup de sous-vues. Maintenant, j'ai deux sous-vues spécifiques et je veux qu'un seul d'entre eux soit "touchable" à la fois. Donc, les deux devraient être capables de répondre à un événement tactile, mais il ne devrait pas être capable de répondre simultanément. Comme j'ai d'autres sous-vues qui devraient pouvoir toucher en même temps, je ne peux pas utiliser la propriété multitouch ou exclusiveTouch. Des idées là-dessus? Peut-être que je pourrais regrouper les deux vues à une seule zone tactile.Gestion de plusieurs touches sur l'iPhone

Merci à l'avance

Répondre

0

logiques de mettre à leur parent (temporairement) désactive celui qui n'a pas eu le contact (userInteractionEnabled = NO).

Bien sûr, quelqu'un pourrait encore mettre un doigt sur chacun d'eux simultanément. Vous pouvez déterminer quelle vue est la plus proche du centre des touches.

+0

J'ai désactivé une vue avec userInteractionEnabled lorsque l'autre a reçu un événement touchesBegan mais comme vous l'avez dit, il est toujours possible d'appuyer simultanément sur les deux. J'ai aussi essayé d'envoyer un événement touchEnded à la vue qui a été touchée en second lieu mais cela n'a pas fonctionné du tout. – Russo

+0

Bien qu'ils soient pressés simultanément, ils ne peuvent pas être envoyés simultanément en même temps, ce qui explique pourquoi la suggestion de Lawrence devrait fonctionner. –

1

Collez une propriété en lecture-écriture, appelons-la viewBeingTouched, dans le délégué de votre application ou dans un autre singleton. Assurez-vous d'utiliser @propertysansnonatomic.

Faites vos deux vues instances d'une classe qui l'emporte sur les méthodes UIResponder ainsi:

  1. En touchesBegan, vérifiez la valeur de viewBeingTouched. Si c'est nil, réglez le sur self et appelez l'implémentation du super. Sinon, ne faites rien. Dans touches touched, vérifiez la valeur viewBeingTouched. Si c'est self, réglez-le à zéro.

Obtenez-le? La première vue pour obtenir un contact saisit la propriété et empêche l'autre de l'enregistrer.

+0

Thx, je pense que je l'ai eu. Je vais l'essayer aujourd'hui dans la soirée. – Russo

Questions connexes