Renvoi des contacts à la vue sous-jacente avec GestureRecogniser


0

J'ai une vue de superposition qui couvre plusieurs vues de frères et sœurs (boutons).

Je suis en train de transmettre des touches à une vue frères et soeurs qui est sous le point de vue calque à l'aide de cette réponse ici: https://stackoverflow.com/a/4847478

C'est parce que mon avis de recouvrement a GestureRecognisers.

Je voudrais que la vue de superposition soit capable de reconnaître les gestes (y compris les gestes sur les boutons) ET passer tous les événements tactiles aux vues de frères et sœurs sous-jacents.

J'ai découvert que les événements sont transférés, mais les clics sur les boutons ne sont toujours pas déclenchés, peut-être en raison du fait que les touches appartiennent à la vue de superposition.

Je ne pense pas qu'il soit possible de changer la propriété du toucher.

Comment puis-je faire enregistrer les clics sur les boutons, étant donné que les événements sont réellement transférés?

  0

Où est le bouton ajouté? en superposition ou en superposition? 08 mars. 172017-03-08 09:57:26

  0

@CodeChanger sous la superposition; le recouvrement (transparent) recouvre les boutons. 08 mars. 172017-03-08 09:59:52

  0

Votre surimpression est-elle transparente? Il se peut que vous ne vouliez pas de superposition, mais que vous vouliez simplement ajouter un reconnaissance de mouvement à la super vue de vos boutons, vous pouvez alors implémenter son délégué pour permettre à d'autres reconnaisseurs de se reconnaître simultanément avec lui. Si cela vous semble une solution, faites le moi savoir et je peux vous fournir une solution plus détaillée? 08 mars. 172017-03-08 11:44:40

  0

@GeorgeGreen Oui, je n'ai pas besoin de la vue de superposition. J'ai besoin que tous les gestes soient reconnus sur le SuperView, et que je puisse transmettre les touches aux boutons même si un geste a été reconnu. J'ai IBActions connecté aux événements TouchUpInside des boutons. À l'heure actuelle, même si les boutons reçoivent les appels touchesBegan, touchesMoves, etc., l'événement TouchUpInside ne se déclenche pas. Je ne veux pas implémenter une détection personnalisée de TouchUpInside. 08 mars. 172017-03-08 22:28:44

  0

@ignoramus Intéressant, si vous avez enlevé la superposition et déplacé les reconnaisseurs de gestes vers la super vue, alors il devrait jouer au ballon avec les autres contrôles. Pourriez-vous afficher le code du contrôleur à l'origine du problème et nous devrions être en mesure de le résoudre? 08 mars. 172017-03-08 22:34:21

  0

@GeorgeGreen Oui, cela fonctionne. Merci beaucoup! Pourriez-vous poster votre commentaire en réponse afin que je puisse l'accepter? 09 mars. 172017-03-09 00:18:18

0

Pour votre problème, vous devez passer votre répondeur au niveau suivant si sa valeur alpha est 0 et sur la base de cela, il passera votre message de répondeur à la prochaine vue et par là vous pouvez obtenir votre contact ou cliquez sur le bouton.

Remplacer la méthode pointInside: dans votre vue récipient et vérifier si alpha vue est touché que de passer le retour NO pour le message passe à répondeur suivant.

comme ceci:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { 
    for (UIView *view in self.subviews) { 
     if (!view.hidden && view.alpha > 0 && view.userInteractionEnabled && [view pointInside:[self convertPoint:point toView:view] withEvent:event]) 
      return YES; 
    } 
    return NO; 
} 

Espérons que cela vous aide à comprendre répondeur chaîne Pour plus de détails, vous pouvez vérifier cette réponse acceptée: How can I click a button behind a transparent UIView?

  0

Malheureusement, cela ne fonctionnera pas, car j'ai besoin que le geste soit reconnu sur la vue de superposition, que la touche soit sur un bouton ou non. 08 mars. 172017-03-08 10:20:28

  0

Avez-vous essayé la chose ci-dessus dans votre code? 08 mars. 172017-03-08 10:22:48

  0

Désolé j'ai mal lu, je vais l'essayer maintenant. 08 mars. 172017-03-08 10:26:19

  0

Mais selon votre question, vous avez besoin d'événement de bouton pas l'événement de reconnaissance de geste sur le bouton suis-je raison? 08 mars. 172017-03-08 10:26:33

  0

Ok, je viens de l'essayer, et ça ne marche pas.J'ai besoin d'un événement de reconnaissance de gestes sur TOUS les affichages superposés, y compris sur les boutons. J'ai édité la question pour clarifier ceci. 08 mars. 172017-03-08 10:37:45

  0

Ok donc une chose de plus que vous pouvez faire dans ce cas détecter le bouton dans la reconnaissance des gestes mais pour cela pouvez-vous poster du code afin que nous puissions avoir une idée de comment vous utilisez le bouton et le geste dans votre vue? 08 mars. 172017-03-08 10:51:08