2010-07-26 3 views
0

Je rencontre un problème avec mon UITextFields dans mon application iPhone et j'espère que quelqu'un l'aura déjà vu auparavant.Problème d'édition UITextField - SDK iPhone

J'ai quelques UITextField sur mon écran, et quand ils sont tapés et leur clavier apparaît ils sont couverts. Pour surmonter ce problème, j'ai animé en vue de se déplacer avec:

-(void)moveViewUpFromValue:(float)fromOldValue toNewValue:(float)toNewValue keep:(BOOL)keep { 

    CABasicAnimation *theAnimation; 
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"]; 
    theAnimation.duration=0.25; 
    theAnimation.repeatCount=1; 
    if(keep) { 
     [theAnimation setRemovedOnCompletion:NO]; 
     [theAnimation setFillMode:kCAFillModeForwards]; 
    } 
    theAnimation.fromValue=[NSNumber numberWithFloat:fromOldValue]; 
    theAnimation.toValue=[NSNumber numberWithFloat:toNewValue]; 
    [self.view.layer addAnimation:theAnimation forKey:@"animateLayer"]; 

} 

Ceci, visuellement, fonctionne très bien, cependant, quand je vais à modifier (maintenir l'écran vers le bas pour obtenir la loupe), il ne apparaître. L'interaction est conservée dans la position avant qu'elle ne bouge.

Des idées sur ce qui pourrait se passer ici?

Un grand merci, Brett

Répondre

0

Ceci est un moyen intéressant d'animer une telle chose, mais pas le plus commun.

Vous êtes en train d'animer une transformation d'une vue - pas la position réelle de la vue. Apparemment, la loupe n'obéit pas à la transformation (tout à fait logique, car elle irait à l'aveuglette, s'étirerait et inclinerait avec la vue autrement). Donc, animez plutôt la position, c'est-à-dire self.view.frame ou self.view.center (ce qui se résume à la même chose). En outre j'utilise habituellement [UIView beginAnimations...] etc. mais si votre approche fonctionne, c'est probablement aussi bien.

+0

C'était tout. Merci beaucoup! Après avoir regardé un peu plus, je suis d'accord que [UIView beginAnimations ...] est probablement la meilleure façon de le faire. – Brett

0

Vous avez fait le point de vue semblent être dans un endroit différent, mais parce que vous ne l'avez pas réellement changé sa position, il est toujours efficace dans l'ancien emplacement pour des choses comme un test de recherche, etc.

Je voudrais Commencez par animer le centre de votre vue au lieu de sa transformation. C'est ce que vous pouvez faire avec juste une animation UIView au lieu d'une CABasicAnimation. De plus, votre vue se retrouvera à la bonne position lorsque l'animation sera terminée, donc les choses devraient fonctionner comme prévu.

Questions connexes