动画视图后UITextView错误内容偏移

时间:2011-11-17 13:03:32

标签: iphone ios ios4 ios5 uitextview

我有一个位于视图底部的UITextView。当用户点击它时,我需要将视图设置为150px。我正在使用:

- (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 个答案:

答案 0 :(得分:4)

在textViewDidBeginEditing方法中调用方法时以及动画完成后,您需要重置文本视图的内容插入...

试试这段代码:

- (void)textViewDidBeginEditing:(UITextView *)textView{
   [textView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
}

答案 1 :(得分:3)

我发现接受的答案引起了一些视觉上的不规则。以下对我来说效果更好。

textView.contentMode = UIViewContentModeTop;

答案 2 :(得分:-3)

尝试使用UITextField解决此问题。