UITextView плохое смещение содержимого после просмотра анимации - PullRequest
4 голосов
/ 17 ноября 2011

У меня есть один UITextView, который находится в нижней части обзора.Когда пользователь нажимает на него, мне нужно анимировать просмотр на 150 пикселей вверх.Я использую:

- (void)textViewDidBeginEditing:(UITextView *)textView{

и

- (void)textViewDidEndEditing:(UITextView *)textView{

, чтобы сделать это.

На iOS5 все работает нормально.Но на iOS 4.3, когда представление анимировано, содержимое этого UITextView поднимается на несколько пикселей вверх.

Снимок экрана: http://cl.ly/1q3e0W2G1M000u1U3w1f

У кого-то были похожие проблемы?

Код:

- (void)textViewDidBeginEditing:(UITextView *)textView{
    if([textView.text isEqualToString:@"Placeholder text"]){
        textView.text = @"";
    }

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationBeginsFromCurrentState:YES];
    self.view.frame = CGRectMake(self.view.frame.origin.x, (self.view.frame.origin.y - 150.0), self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];
}

- (void)textViewDidEndEditing:(UITextView *)textView{
    if([textView.text isEqualToString:@""]){
        textView.text = @"Placeholder text";
    }

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationBeginsFromCurrentState:YES];
    self.view.frame = CGRectMake(self.view.frame.origin.x, (self.view.frame.origin.y + 150.0), self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];    
}

Ответы [ 3 ]

4 голосов
/ 17 ноября 2011

Вам необходимо сбросить вставку содержимого вашего текстового представления при вызове метода в методе textViewDidBeginEditing и после завершения анимации ...

Попробуйте этот код:

- (void)textViewDidBeginEditing:(UITextView *)textView{
   [textView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
}
3 голосов
/ 08 июня 2012

Я обнаружил, что принятый ответ вызвал некоторые визуальные нарушения. Следующее сработало для меня намного лучше.

textView.contentMode = UIViewContentModeTop;
0 голосов
/ 17 ноября 2011

Попробуйте UITextField, чтобы решить эту проблему.

...