2010-01-14 4 views
0

Je souhaite que deux pages s'affichent: L'une contient une image, elle ne doit pas être lisible, car l'image correspond bien à l'écran. Le second est un texte plus long qui doit être défilé verticalement. J'ai essayé l'approche classique d'un grand UIScrollView où je juste change le décalage de la valeur x, pourtant ceci me laisse avec le problème que l'image est en quelque sorte perdue et l'utilisateur peut défiler vers le bas là aussi bien que faire glisser le ScrollView en diagonale, ce qui ressemble très non-iPhone.TTScrollView avec UIScrollView imbriqué

Je me suis donc tourné vers Three20 et mis en œuvre une approche avec son TTScrollView. Sur une page je viens de rendre une vue d'image qui est affichée et sur l'autre page j'incruste un UIScrollView avec le texte. Cela fonctionne bien tant que vous démarrez à partir de l'image et passez des pages à la ScrollView. Cependant, vous n'êtes plus en mesure de revenir en arrière car UIScrollView ne transmet aucun événement tactile à la classe parente (qui serait le TTScrollView). Il y a quelques méthodes que vous pouvez implémenter pour obtenir les touches qui se sont produites (touchesShouldBegin: (NSSet *) toucheEvent: (UIEvent *) view inContentView: (UIView *) view), mais je n'ai pas réussi à les faire fonctionner et je ne pouvais pas trouver une méthode dans le TTScrollView pour lui dire de faire défiler une page d'avant en arrière de toute façon.

Est-ce que quelqu'un a rencontré le même problème et connaît une solution? Que devez-vous faire si vous avez plusieurs pages dont le contenu n'a pas la même longueur?

Je suis heureux pour n'importe quel indice, j'ai travaillé dessus pendant des heures déjà.

Répondre

0

Vous pouvez transmettre les touches à sa superview par:

-(void) touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view{ 
    if([self.superview respondsToSelector:@selector(touchesShouldBegin:withEvent:inContentView:)]){ 
     [self.superview performSelector:@selector(touchesShouldBegin:withEvent:inContentView:) withObject:touches withObject:event withObject:view]; 
    } 
} 

Je vais essayer de faire la même chose. Je vous ferai savoir si je l'ai essayé.