2009-05-24 10 views
0

J'ai un UITextView au-dessus d'un UIView. Ils sont dans un PageScrollView. L'utilisateur peut glisser n'importe où en dehors de UITextView et feuilleter la page suivante (vue). J'aimerais que l'utilisateur balaye l'UITextView et feuillette la vue suivante. L'UITextView défile verticalement lorsqu'il y a beaucoup de texte, que l'utilisateur peut balayer et voir le reste. Afficher les parchemins de pagination horizontalement. J'ai besoin de l'UITextView pour donner son glissement horizontal à l'UIView. Comment puis je faire ça?Attribution d'un événement swip à un autre contrôle

Répondre

1

Si vous sous-classe UITextView et passer outre chacun il y a des événements tactiles:

  • touchesBegan: withEvent:
  • touchesMoved: withEvent:
  • touchesEnded: withEvent:
  • touchesCancelled: withEvent:

avec ceci:

- (void) touchesXXX:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesXXX:touches withEvent:event]; 
    [[self nextResponder] touchesXXX:touches withEvent:event]; 
} 

Ceci permettra la gestion de toutes les touches par le UITextView et sa vue parente. Depuis votre UITextView défile exclusivement verticalement et votre UIScrollView défile exclusivement horizontalement, cela fonctionnera très bien.

+0

Dans touchesBegan, pourquoi cette ligne [touch locationInView: self.view]; donner cette erreur, "demande de vue de membre est quelque chose pas une structure ou une union"? J'hérite de UITextView. – 4thSpace

+0

Si je ne peux pas détecter si le balayage est vertical, comment puis-je savoir quand transférer le balayage vers PageScrollView? – 4thSpace

+0

UITextView EST une vue, elle n'en contient pas. Juse utilise locationInView: moi-même. Pour détecter si le balayage est vertical ou horizontal, vous n'avez pas besoin de le faire. Laissez les deux vues gérer les deux types de balayages, puisque glisser horizontalement n'a aucun effet sur un UITextView et que le siping vertical n'a aucun effet sur PageScrollView, cela n'aura aucune importance. –

Questions connexes