установка максимальной емкости для UITextField - PullRequest
1 голос
/ 31 марта 2011

Привет, я использую ряд текстовых полей подряд в моем приложении, и мое требование заключается в том, чтобы текстовое поле принимало только один символ. Если пользователь вводит второй символ, никаких действий выполнять не нужно.

Я реализовалметод делегата, как показано ниже

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

if ([cellTextField.text length]>=MAXLENGTH && range.length==0) {
    textField.text=[cellTextField.text substringToIndex:MAXLENGTH-1];
    return NO;
}
else {
    return YES;
}

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

мое следующее требование - если пользователь продолжает вводить второй символ, символ должен быть помещен впоследовательный textField (представьте себе приложение кроссворд или шифрование).Пожалуйста, помогите мне в обоих сценариях, если возможно, иначе решение для первого требования также благодарно.

спасибо, dinakar

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

Следующий код решил это для меня.

Убедитесь, что вы проверили "\ b" (escape-символ Backspace), чтобы пользователь все еще мог стереть.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([textField.text length] >= MAXLENGTH && ![string isEqualToString:@"\b"])
        return NO;
    return YES;
}

Что касается второго требования, то оно действительно не слишком сложно.Просто добавьте несколько строк кода в приведенный выше оператор if:

nextTextField.text = [nextTextField.text stringByAppendingString:string]; 

Это должно добавить любой текст, который вы только что ввели, в конец вашего следующего текстового поля.Вы также можете изменить способ обработки возврата.Что-то вроде:

 if ([string isEqualToString:@"\b"])
    nextTextField.text = [nextTextField.text substringToIndex:[nextTextField.text length]-1];

Добавление этого кода в вышеупомянутый оператор if также должно позволить вам удалить символ в конце полной строки (в конце строки в следующем текстовом поле).


РЕДАКТИРОВАТЬ: Вот код, который я использую для создания поля.

titleInput = [[UITextField alloc] initWithFrame:(CGRect){40,145,400,30}];
titleInput.borderStyle = UITextBorderStyleRoundedRect;
titleInput.delegate = self;
[self addSubview:titleInput];

Cheers

1 голос
/ 31 марта 2011
if(cellTextField.text.length >= MAXLENGTH)
{
      [cellTextField2 becomeFirstResponder]
}

Устанавливает фокус вторым текстовым полем

0 голосов
/ 31 марта 2011

отметьте в следующих функциях количество символов в вашем UITextField;

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

, если количество символов в вашем текстовом поле больше одного, просто верните NO;

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
  {
         if(mytextField1 == textField && [mytextField1.text length] >= 1)
         {
               [mytextField1 becomeFirstResponder];
               return NO;
         }
         else if(mytextField2 == textField && [mytextField2.text length] >= 1)
         {
               [mytextField3 becomeFirstResponder];
               return NO;
         }
         ------------------------------- 
         -------------------------------
         else if(mytextField8 == textField && [mytextField8.text length] >= 1)
         {
               [mytextField1 becomeFirstResponder];
               return NO;
         }

       return YES;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...