Очистить кнопку в 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 = @"";
}

Вы можете использовать эти изображения для двух состояний кнопки:

UITextFieldButtonUITextFieldButtonPressed

Ответ 3

С точки зрения продукта, если у вас будет четкая кнопка, вы, вероятно, захотите использовать UITextField вместо UITextView, а UITextField поддерживает ясную кнопку изначально - установите свойство clearButtonMode как например:

UITextField *textfield = ...;
textfield.clearButtonMode = UITextFieldViewModeAlways;

Смотрите снимок экрана:

enter image description here

Вы можете использовать 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