2012-04-22 1 views
1

J'ai un UIPageViewController qui affiche des images. J'ai défini une opportunité pour envoyer une image souhaitée que l'utilisateur est en train de visualiser. Pour cela, si l'utilisateur appuie une fois sur la zone centrale de l'écran, une barre d'onglets apparaît avec un élément de barre intitulé "Mail". Et quand ce bouton est pressé l'image est attachée à un compositeur de courrier. Mais j'ai un petit problème ici: Comme le bouton de la barre est sur le bord gauche quand j'appuie sur le curl de la page a lieu et je ne peux pas obtenir le compositeur de courrier - plus précisément je ne peux pas obtenir le bouton tapé. Comment est-ce que j'empêcherais la boucle de page quand ce bouton est pressé?IOS - Empêche la courbure de page dans PageViewController

Répondre

2

Il existe plusieurs façons de résoudre ce problème. La deuxième solution est plus facile à mettre en œuvre. Le premier est d'accéder aux reconnaisseurs de gestes définis pour le contrôleur de vue de page (à partir de la propriété "gestureRecognizers", qui retourne un tableau de reconnaissance de gestes), de rechercher les gestes "tape type" puis de leur affecter un délégué à votre contrôleur de vue. Ce délégué implémentera la méthode

gestureRecognizer:shouldReceiveTouch:
et vérifiera si le tap s'est produit dans la position de la barre d'onglets et retournera NO dans ce cas, donc le geste ne sera pas déclenché. Votre délégué renverra OUI si vous voulez toujours le toucher, mais il est en dehors de la région de la barre d'onglets.

Une autre possibilité consiste à définir un nouveau système de reconnaissance de gestes de prise et à l'affecter à la barre d'onglets. Dans ce cas, lorsque vous appuyez sur le bouton (qui se trouve dans la barre d'onglets), le sélecteur de cible que vous avez assigné à votre geste de frappe sera déclenché. Clairement, ce sélecteur ne fera rien puisque son but est simplement d'éviter la propagation aux gestes qui le dépassent (c'est le comportement par défaut).

Je pense que ma réponse est venue trop tard de votre demande, donc si vous avez trouvé une meilleure solution, postez-la!

Questions connexes