Удалите последний символ, введенный в поле UItextfield

Мне нужно удалить последний символ, если длина текстового поля превышает 100, я использовал следующий код:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if(textfield.text.length>=100) { NSString *text; textField.text=text; NSString *newString = [text substringToIndex:[text length]-1]; textField.text=newString; } return YES; } 

Но он просто стирает весь текст.

Вы удаляете весь текст из-за этой строки:

 textField.text=text; // text is nil here 

То, что вы хотели сделать, скорее всего:

 NSString *text = textField.text; 
 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if(textfield.text.length>=100) { NSString *text; text =[[textField text] stringByAppendingString:string]; NSString *newString = [text substringToIndex:[text length]-1]; textField.text=newString; } return YES; } 

Вставить код может решить вашу проблему

попробуйте с приведенным ниже кодом

  - (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText { NSString* newText = [textView.text stringByReplacingCharactersInRange:aRange withString:aText]; // CGSize strSize = [newText sizeWithFont:textView.font constrainedToSize:CGSizeMake(200, 10000) lineBreakMode:UILineBreakModeWordWrap]; if([newText length] > 100) { return NO; // can't enter more text } else return YES; // let the textView know that it should handle the inserted text } 

В iOS 5 или новее:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if([textField.text length] >= 100) { [textField deleteBackward]; } } 

попробуй это:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; return !([newString length] >100); } 

Чтобы исправить длину UITextField вам не нужно работать с конкатенацией строк. Просто используйте этот простой код:

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ return !([string length]+[textField.text length] > FIXED_LENGTH); } 

Таким образом, вы, как UITextFieldDelegate , говорите: «измените UITextField добавления textField.text на textField.text только если сумма всех символов не превышает максимальную длину»

Вот пример, как удалить любой текст в UITextField; относится к iOS 10.3 и более поздним версиям

 @IBOutlet var upcText: UITextField! if var textRange = upcText.selectedTextRange { if textRange.isEmpty && textRange.start != upcText.beginningOfDocument { // text has not been selected and the cursor is not at the beginnning // then create new range to delete previous character textRange = upcText.textRange(from: upcText.position(from: textRange.start, offset: -1)!, to: textRange.start)! } upcText.replace(textRange, withText: "") } 
  • UITextField -webView больше не поддерживается
  • Как я могу разрешить UITextField иметь только один текст / номер и перемещаться по нескольким `UITextField` с помощью кнопки Next / Done
  • UITextField с закругленным углом Без использования фоновых изображений
  • iPhone: Как я могу сделать UITextField невидимым, но все еще доступным?
  • Как отключить опции «Заменить» и «Поделиться» в UITextField долгое нажатие?
  • Создайте пространство в начале UITextField
  • iOS: настройка размера входного файла UITextField
  • снова добавьте текстовое поле
  • Swift добавить значок / изображение в UITextField
  • Заполнение текста заполнителя ios
  • Переключение UITextField для отображения и скрытия в Swift
  • Давайте будем гением компьютера.