выделение текста внутри текстового поля

Я хочу, чтобы текст внутри текстового поля был выделен, когда я нажимаю на него.

Я хочу, чтобы исходный текст был удален в тот момент, когда кто-то нажал на цифровую панель. Я попробовал использовать clearButtonMode, но после того, как размер моего текстового поля очень маленький, значок креста полностью занимает текстовое поле.

Есть идеи, как это сделать?

Это может быть достигнуто

(void)textFieldDidBeginEditing:(UITextField *)iTextField { [iTextField selectAll:self]; } 

Вам нужно сделать это сами. Вы можете попробовать:

  • изменение шрифта текстового поля (большего, более смелого, другого цвета)
  • наложение прозрачного UIView поверх текстового поля.
  • изменение фона текстового поля
  • изменить стиль границы

есть много вариантов …

EDIT: в ответ на ваш вопрос, чтобы очистить поле предыдущего значения, когда редактирование начинается в текстовом поле, вы настраиваете свой объект для соответствия протоколу UITextFieldDelegate и реализуете этот метод:

 - (void)textFieldDidBeginEditing:(UITextField *)textField { textField.text = nil; } 

Самый простой способ выделить текст при нажатии текстового поля – это просто подкласс UITextField, переопределить startFirstResponder и выделить весь текст там.

Если «Выбрать все»: не всегда работает, это исправление:

 - (void)textFieldDidBeginEditing:(UITextField *)textField { [textField performSelector:@selector(selectAll:) withObject:textField afterDelay:0.f]; } 

Если вы все еще хотите использовать другие функции делегата в вашем ViewController, я рекомендую вам добавить это:

 override weak var delegate: UITextFieldDelegate? { didSet { if delegate?.isKindOfClass(YourTextField) == false { // Checks so YourTextField (self) doesn't set the textFieldDelegate when assigning self.delegate = self textFieldDelegate = delegate delegate = self } } } // This delegate will actually be your public delegate to the view controller which will be called in your overwritten functions private weak var textFieldDelegate: UITextFieldDelegate? class YourTextField: UITextField, UITextFieldDelegate { init(){ super.init(frame: CGRectZero) self.delegate = self } func textFieldDidBeginEditing(textField: UITextField) { textField.performSelector(Selector("selectAll:"), withObject: textField) textFieldDelegate?.textFieldDidBeginEditing?(textField) } } 

Таким образом, вашему контроллеру просмотра не нужно знать, что вы перезаписали делегата, и вы можете реализовать функции UITextFieldDelegate в вашем контроллере представления.

 let yourTextField = YourTextField() yourTextField.delegate = self 
  • Есть ли запрос делегата, когда текст изменен в UITextView?
  • Динамическое поведение неправильной настройки UITextView
  • как вставить текст в любую позицию курсора в uitextview?
  • ограничение количества символов пользователь может ввести в несколько UITextViews
  • Изменение направления текста UITextView
  • Подтвердить автозаполнение UITextview
  • Удалить (не Backspace) не запускает UITextViewDelegate's shouldChangeTextInRange
  • Инициализация NSAttributedString с HTML-файлом анализирует HTTP-ссылки как URL-адреса файлов
  • Как вызвать textViewdelegate на программные изменения UITextView
  • UITextView прокручивается после удаления / вставки текста
  • iOS - UITextView + NSUndoManager
  • Давайте будем гением компьютера.