touchesBegan dans UIView pas être appelé
Je sais que cette question doit être répondu à un grand nombre de fois déjà, mais il me donne mal à la tête maintenant.
La touchesBegan:
n'est pas appelée dans mon UIView. Avant je l'ai ajouté dans mon application, j'ai fait un essai premier projet. Dans le projet d'essai, tout a fonctionné parfaitement. Ce que j'ai fait était une sous-classe UIView où la touchesBegan:
est mis en œuvre, et ajouter ce UIView comme une sous-vue d'un autre point de vue. Ce deuxième point de vue a un bouton qui affiche le sous-classé UIView une fois cliqué. Encore une fois, tout fonctionne exactement comment je le veux.
Maintenant, quand j'ai fait la même chose dans mon application existante, la touchesBegan:
méthode (ainsi que le touchesMoved:
) n'est jamais appelée. Quelqu'un peut-il m'expliquer pourquoi? Je ne comprends vraiment pas pourquoi il n'a jamais été appelée.
Lorsque j'ai activé l'interaction de l'utilisateur, il ne reconnaît toujours pas la touche. Encore bien que, dans mon projet d'essai je n'ai même pas permis à l'interaction de l'utilisateur, mais encore, il reconnaît la touche.
OriginalL'auteur Anna Fortuna | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
Je viens de trouver la réponse à cette question. J'ai oublié de mentionner que la vue est à l'intérieur d'un autre UIView, qui le userInteraction est désactivé (Il est désactivé par défaut). Alors, quand j'ai activé la userInteraction de ce point de vue, les touches sont maintenant reconnus.
OriginalL'auteur Anna Fortuna
Dans mon cas
background = UIColor.clearColor()
est la raison pour laquelletouchesBegan
n'a pas été appelé. Son évidemment pas appelé sur les éléments transparents.OriginalL'auteur David
J'ai eu du mal sur ce problème depuis un certain temps... et je l'ai trouver. Je pense que le touchesBegan remplacer la fonction de l'écoute sur la vue principale: la première sur la table de montage de l'arbre de la ViewController! J'aimerais poster une image de mon storyboard pour être plus clair, mais je ne peux pas! 😉
De toute façon, SI vous avez des sous-vues, ils peuvent couvre la vue principale... de cette manière, le toucher habitude de la "portée" de la vue principale.
Pour éviter cela, vous devez définir la Fond propriété dans le Attribut Inspecteur à par Défaut pour TOUS LES sous-vues. De cette façon, le fond sera transparent et le toucher seront en mesure d'atteindre la vue principale.
Si vous ne voulez pas définir l'arrière-plan transparent il ya quelque chose que vous pouvez faire:
-Ajouter une prise de courant de votre dernier point de vue (avec en fond de décor)
-Ajouter un appuyez geste de reconnaissance à
Poignée du robinet de disposer du clavier
ES.
Propriétés:
Dans le viewDidLoad():
À l'extérieur:
OriginalL'auteur Nem