Comment faire pour bloquer un geste de superview à la sous-vue?
Je suis en train d'écrire un module qui, à chaque fois, j'ai glisser sur une vue, deux sous de vues avec une demi-taille de l'affichage va être ajouté. Ceux des sous-vues ont leurs propres gestes (par exemple: pan,...). La première fois que j'ai faites glisser, c'est OK, car aucun des sous-vue a été créé. Mais une fois que la sous-vue été créé, à chaque fois que je le balayage, le geste de balayage est toujours, passer à ses sous-vues. :(, j'ai donc de passer 2 fois à diviser.
Je veux savoir est-il un moyen de bloquer balayez vers la transmet à son sous-vue? Merci.
Mise à JOUR
J'ai utilisé shouldRecognizeSimultaneouslyWithgesturerecognizer faire ces gestes de travail simultanément. Mais il y a encore quelques problèmes. La vue parent ont son geste de Balayage, la sous-vue avoir son Pan geste. Depuis que j'utilise souldRecognizeSimultaneouslyWithgesturerecognizer, parfois, quand je suis panoramique, le geste de balayage des déclencheurs. Donc, vous savez comment désactiver le Balayage alors que Pan est active dans cette situation?
- Ce comportement voulez-vous? Si vous avez geste de reconnaissance dans les deux sous-vue et la vue parent, évidemment, il s'agit d'un conflit.
- Je veux le comportement de balayage uniquement dans la vue parent, de ne pas la sous-vue. Je n'ai pas ajouter ce geste à la sous-vue.
Vous devez vous connecter pour publier un commentaire.
Vous avez à mettre en œuvre les UIGestureRecognizerDelegate méthode:
Et ajouter votre contrôleur en tant que délégué de la geste des modules de reconnaissance. Puis, lorsque deux modules de reconnaissance de geste de répondre à un geste, cette méthode sera appelée, et ici, vous pouvez mettre en œuvre la logique que vous souhaitez pour votre application.
Dans la déclaration d'interface du contrôleur, vous devez taper:
Puis, lors de la création de la geste de reconnaissance:
Et puis, enfin, vous ajoutez cette méthode pour le contrôleur:
MODIFIER
Vous pouvez également mettre en place
Et ici, de détecter si vous avez déjà présenté les sous-vues, et de bloquer tout mouvement que vous voulez.
ensemble userinteractionEnabled à AUCUNE de vos sous-vue
si vous ne voulez pas désactiver userInteraction ensuite utiliser
cancelsTouchesInView
méthodePour bloquer tous les modules de reconnaissance de geste de superviews j'ai créé un UIGestureRecognizer sous-classe qui ne vient que lorsqu'il est attaché à un point de vue. Voir le code suivant (prises à partir de mon WEPopover projet):
Si vous souhaitez bloquer tous les modules de reconnaissance de geste joint à la mère de vues de certains de la vue, il suffit de faire les opérations suivantes:
essayer comme cela,
Considérant que j'ai un
dialogView
direct d'un sous-vue de monUIViewController
principalview
je suis à la fixation d'un geste de reconnaissance pour les principauxview
et effectuez les opérations suivantes (réglage de mon point de vue, le contrôleur de la geste de reconnaissancedelegate)
: