Странное поведение UITextView - PullRequest
0 голосов
/ 11 октября 2011

У меня есть 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 Ответ

4 голосов
/ 11 октября 2011

Вы проверяете значение textView.text перед изменением;Вы, вероятно, хотите проверить длину после того, как будет применено обновление.

Например:

NSString *newString = [textView.text stringByReplacingCharactersInRange:range withString:text];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...