Я добавляю пользовательскую кнопку очистки (UIButton) в UITextField как rightView, однако я обнаружил, что в viewMode есть странное поведение.Кажется, он не отображается как обычная кнопка очистки, несмотря на установленный режим просмотра.Пример кода ниже:
UITextField *f = [[[UITextField alloc] init] autorelease];
f.frame = CGRectMake(0, 0, 300, 44);
f.backgroundColor = [UIColor clearColor];
f.textColor = [UIColor whiteColor];
f.clearButtonMode = UITextFieldViewModeNever;
UIImage *image = [UIImage imageNamed:@"Image.png"];
UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
b.frame = CGRectMake(0, 0, image.size.width, image.size.height);
[b setImage:image forState:UIControlStateNormal];
f.rightView = b;
f.rightViewMode = UITextFieldViewModeWhileEditing;
Кнопка отображается правильно в следующих состояниях:
- Показывает, когда сфокусировано и без текста
- Показывает, когда сфокусировано и печатает
- Скрывается, когда нет фокуса
Однако, если текстовое поле уже содержит контент, и вы переключаете фокус на него, кнопка очистки не отображается.Чтобы он снова отображался, вы должны удалить весь текст и переключить фокус вперед и назад.
Я не нашел никого другого с этой проблемой, поэтому какое-то время царапал ему голову.Любая потеря света очень ценится.