Я добавляю пользовательскую кнопку очистки (UIButton) в UITextField как правое, но я обнаружил там какое-то странное поведение на 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;
Кнопка отображается правильно в следующих состояниях:
- Показывает сфокусированный текст и текст
- Показывает сфокусированный и ввод текста
- Скрывается, когда нет фокуса
Однако, если текстовое поле уже имеет контент, и вы переключаете фокус на него, кнопка очистки не отображается. Чтобы его снова показать, вы должны удалить весь текст и переключить фокус взад и вперед.
Я не нашел кого-то еще с этой проблемой, так что некоторое время царапаю голову над этим. Любое световое излучение очень ценится.