2010-07-28 2 views
1

У меня есть несколько текстовых полей в моем файле nib. Я хочу, чтобы диапазон ввода в моем текстовом поле составлял 6-16 цифр, и я не хочу изменять какой-либо другой ввод текстового поля. Для этого я сделал метод, называемый tflimit, как показано ниже.диапазон полей ввода текста в интерфейсе builder

-(IBAction)tflimit:(id)sender 
{  
    if([textfields1.text length]>=15) 
    { 
     [textfields1 resignFirstResponder]; 
    } 
} 

С помощью этого метода я могу ввести только 16-значный ввод. Как я могу выбрать диапазон (6-16) ввода в текстовое поле без изменения других кодов.

ответ

2

Вы можете фильтровать пользовательский ввод в textField:shouldChangeCharactersInRange:replacementString: методе в текстовом поле делегата:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
    if (textField == textfields1){// Apply logic only to required field 
     NSString* newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
     return [newString length] < 16 && [newString length] > 5; 
    } 
    return YES; 
} 

Обратите внимание, что для правильной работы этого метода требуется текстовое поле, чтобы быть предварительно заполненным с текстом длиной не менее 5 символов.

+0

thnks для ur reply..but Мне нужно вводить с клавиатуры без заполнения любого предыдущего ввода. И для реализации этого метода я должен объявить в .h файле.and для реализации этого метода все мои поля не являются ответ. Как выполнить свою задачу. Помогите мне. – mukeshpawar

+0

Чтобы избежать предварительного заполнения, вы должны добавить дополнительную логику для проверки минимальной длины текста - например. проверьте этот случай только в том случае, если символы удаляются (то есть, когда replaceString пуст). Чтобы выполнить эту работу, ваш контроллер должен соответствовать протоколу UITextFieldDelegate, но, к сожалению, не понимаю, какая у вас проблема. – Vladimir

Смежные вопросы