Как добавить кнопку очистки (крест внутри круга) для текстового вида, например, в текстовом поле?
Очистить кнопку в UITextView
Ответ 1
просто сделайте uibutton и поместите его на uitextview и установите его действие для прозрачного текстового представления;
uitextview.frame = (0,0,320,416);
uibutton.frame = (310,0,10,10);
[uibutton setimage:@"cross.png" forcontrolstate:uicontrolstatenoraml];
[uibutton addTarget:self action:@selector(clearButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
-(void)clearButtonSelected{
[email protected]"";
}
Надеюсь, что вы хотите очистить текст в текстовом виде, когда вы нажимаете кнопку перекрестного выше, это помощь если не понимаю, то я могу отправить вам правильную программу для этого
Ответ 2
Основываясь на ответе GhostRider на более точную и актуальную реализацию:
int kClearButtonWidth = 15;
int kClearButtonHeight = kClearButtonWidth;
//add the clear button
self.clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButton.png"] forState:UIControlStateNormal];
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButtonPressed.png"] forState:UIControlStateHighlighted];
self.clearButton.frame = CGRectMake(0, 0, kClearButtonWidth, kClearButtonHeight);
self.clearButton.center = CGPointMake(self.textView.frame.size.width - kClearButtonWidth , kClearButtonHeight);
[self.clearButton addTarget:self action:@selector(clearTextView:) forControlEvents:UIControlEventTouchUpInside];
[self.textView addSubview:self.clearButton];
И метод
- (void)clearTextView:(id)sender{
self.textView.text = @"";
}
Вы можете использовать эти изображения для двух состояний кнопки:
Ответ 3
С точки зрения продукта, если у вас будет четкая кнопка, вы, вероятно, захотите использовать UITextField
вместо UITextView
, а UITextField
поддерживает ясную кнопку изначально - установите свойство clearButtonMode
как например:
UITextField *textfield = ...;
textfield.clearButtonMode = UITextFieldViewModeAlways;
Смотрите снимок экрана:
Вы можете использовать UITextFieldViewModeWhileEditing
только для отображения кнопки очистки, когда пользователь активно обновляет содержимое.
Ответ 4
Там ничего не построено, как для UITextField. Вам нужно будет добавить представление самостоятельно (возможно, UIButton) и поместить его правильно, а также каким-то образом заставить текст обернуть его правильно. (И я не думаю, что последнее действительно возможно.)
Возможно, вместо этого вы должны отобразить панель инструментов над клавиатурой (или inputAccessoryView
, если вы настроили таргетинг на 3.2 и более поздние версии), которая обеспечивает нажмите кнопку очистки.
Ответ 5
Для меня изменение свойств .frame или .contentInset не сработало.
Для меня лучший результат исходил из:
1) добавив UIView к контроллеру, дайте ему круглые углы и границу, чтобы имитировать UITextView.
self.viewTextBackground.layer.borderColor = [UIColor colorWithRed:171/255.0 green:171/255.0 blue:171/255.0 alpha:1.0].CGColor;
self.viewTextBackground.layer.borderWidth = 1.0f;
self.viewTextBackground.layer.cornerRadius = 9.0f;
2) поместите UITextView поверх этого UIView. Поместите его так, чтобы границы основного UIView оставались видимыми.
3) дают круглые углы UITextView:
self.textNote.layer.cornerRadius = 9.0f;
3) Сделайте свою ширину fe. На 30 пикселей меньше по сравнению с базовым UIView. Теперь у вас есть место для кнопки clear.
4) просто добавьте UIButton к контроллеру и поместите его в верхнем правом углу основного UIView.
5) измените свойства кнопок: установите его тип в "custom" и установите его изображение на изображение серого креста.
6) связать действие с кнопкой te, чтобы очистить UITextView