Удалите последний символ, введенный в поле 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; } 

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

7 Solutions collect form web for “Удалите последний символ, введенный в поле UItextfield”

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

 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: "") } 
  • Swift вычисляет значение UITextFields и возвращаемое значение
  • Можно ли настроить клавиатуру из UITextField?
  • Отображение как правильного вида, так и кнопки очистки в UITextField
  • Курсор не отображается при вызове функции startFirstResponder
  • Как заставить UITextField стать первым ответчиком, используя его поле тега
  • Нажата клавиша «Удалить».
  • Измените текст UITextField прямо перед редактированием при использовании пользовательского UITableViewCell
  • UITextField как отключить пасту?
  • Как убрать клавиатуру при касании где-либо вне UITextField (в быстром)?
  • Текст UITextField сдвигается влево на 1px при редактировании
  • Предупреждение о назначении id <UITextFieldDelegate>, когда я согласен с протоколом
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.