Удалить последний символ, введенный в поле UItextfield - PullRequest
5 голосов
/ 23 марта 2012

Мне нужно удалить последний символ, если длина текстового поля превышает 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 ]

5 голосов
/ 23 марта 2012

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

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

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

NSString *text = textField.text;
3 голосов
/ 30 июня 2012

В iOS 5 или более поздней версии:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if([textField.text length] >= 100)
    {
        [textField deleteBackward];
    }
}
3 голосов
/ 23 марта 2012
- (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;

 }

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

2 голосов
/ 23 марта 2012

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

 - (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
}
0 голосов
/ 26 июня 2017

Вот пример, как удалить любой текст в 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: "")
}
0 голосов
/ 05 апреля 2016

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

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    return !([string length]+[textField.text length] > FIXED_LENGTH);

}

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

0 голосов
/ 23 марта 2012

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

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
return !([newString length] >100);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...