0

我有一个在代码中创建的 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 中有一个占位符的行为,但是这个问题很烦人

谢谢你的帮助!

4

1 回答 1

4

您正在检查textView.text更改前的值;您大概想在应用更新后检查长度。

例如:

NSString *newString = [textView.text stringByReplacingCharactersInRange:range withString:text];
于 2011-10-11T16:21:07.220 回答