奇怪的UITextView行为

时间:2011-10-11 16:15:15

标签: iphone objective-c uitextview uitextviewdelegate

我有一个我在代码中创建的UITextView:

myView = [[UITextView alloc] initWithFrame:CGRectMake(10,5,220,50)];
myView.editable = YES;
myView.font = [UIFont fontWithName:@"Helvetica" size:16];
myView.bounces = NO;
myView.delegate = self;

我也在标题中设置了UIView * myView .. 并设置委托 - UIViewController UITextViewDelegate>

我希望每次用户写文本时都隐藏标签 因为我检查它是否等于0,否则它隐藏。

问题出在这个方法中 -

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if(textView.text.length == 0)
        descLabel.hidden = NO;
    else 
        descLabel.hidden = YES;

    return YES;
}

程序运行但是当我输入第一个字母时标签仍然存在, 当我输入第二个字母时,它会按原样进行。然后我删除那两个,它仍然消失了! (提醒:我希望标签在长度为0时隐藏)但是当我再次按下删除时,我可以看到标签。很奇怪..

我想在UITextView中拥有占位符的行为,但这个问题很烦人

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您正在检查更改前的textView.text值;你可能想要在更新后检查长度。

e.g:

NSString *newString = [textView.text stringByReplacingCharactersInRange:range withString:text];