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;
}

プログラムは実行されますが、最初の文字を入力するとラベルが残り、2 番目の文字を入力すると正常に動作します。それから私はそれらの2つを削除しましたが、まだ消えています! (注意:長さが0のときにラベルを非表示にしたい)が、もう一度削除を押すと、ラベルが表示されます。かなり奇妙..

UITextView でプレースホルダーの動作をしたいのですが、この問題は面倒です

ご協力いただきありがとうございます!

4

1 に答える 1

4

textView.text変更前の値を確認しています。おそらく、更新が適用された後に長さを確認したいでしょう。

例えば:

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