Проблема редактирования UITextField - iPhone SDK - PullRequest
0 голосов
/ 26 июля 2010

У меня возникла проблема с моими UITextFields в приложении для iPhone, которая, я надеюсь, кто-то здесь уже видел.

У меня есть несколько UITextField на моем экране, и когда они касаются и появляется клавиатура, они закрыты. Чтобы преодолеть это, я анимировал вид, чтобы двигаться вверх:

-(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"]; 

}

Это визуально прекрасно работает, однако, когда я иду к редактированию (удерживая экран, чтобы получить увеличительное стекло), оно не появляется. Взаимодействие сохраняется в положении до его перемещения.

Есть идеи, что здесь может происходить?

Большое спасибо, Brett

Ответы [ 2 ]

0 голосов
/ 26 июля 2010

Вы сделали вид, что он находится в другом месте, но поскольку вы фактически не изменили его позицию, он все еще эффективно находится в старом месте для таких вещей, как тестирование попадания и т. Д.

Я бы начал с анимации центра вашего вида вместо его преобразования. Это можно сделать только с помощью анимации UIView вместо CABasicAnimation. Кроме того, после завершения анимации ваше представление фактически окажется в правильном положении, поэтому все должно работать так, как вы ожидаете.

0 голосов
/ 26 июля 2010

Это интересный способ оживить такую ​​вещь, но не самый распространенный.

Вы фактически анимируете трансформацию вида, а не фактическую позицию вида. По-видимому, увеличительное стекло не подчиняется трансформации (вполне логично, так как в противном случае оно будет сгибаться, растягиваться и наклоняться)

Так что скорее оживите позицию, то есть self.view.frame или self.view.center (что сводится к одному и тому же). Кроме того, я обычно использую [UIView beginAnimations...] и т. Д., Но если ваш подход работает, это, вероятно, так же хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...