2013-07-18 2 views
4

У меня есть текстовое поле, которое должно принимать численное значение только определенного диапазона, например, m-n. Я просмотрел много статей, но все они просто говорят, как установить максимальную длину для текстового поля. Но мне нужно установить текстовое поле так, чтобы оно принимало значения только диапазона, например от 23 до 103. Мне удалось убедиться, что текстовое поле принимает только числовые значения, установив тип клавиатуры на цифровую панель. Кто-то, пожалуйста, помогите.Установить диапазон числовых значений для текстового поля

+0

С прошивкой или OS X? –

+0

Я пытаюсь разработать приложение для iOS. –

+1

Если вы хотите установить минимальное значение как 23, то что происходит, когда тип 2 в текстовом поле означает, что вы ожидаете? – Balu

ответ

4

Вы можете проверить значение, когда пользователь закончил редактирование текстового поля.

Установите делегат TextField к контроллеру представления, а затем:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    NSString *stringValue = textField.text; 
    NSInteger integer = [stringValue intValue]; 
    if (integer <23 || integer > 103) 
     // You can make the text red here for example 
     return NO; 
    else 
     return YES; 
} 
+0

Спасибо, но мне нужно, если верхний предел равен 103, тогда пользователь не сможет ввести 104. –

+0

Вот почему я возвращаю NO в textFieldShouldEndEditing. Он не может прекратить редактирование текстового поля, пока он не введёт действительное значение. –

+0

Ну, я думаю, что логика должна быть в textField: shouldChangeCharactersInRange: replacementString: method. –

1

Вы обычно достигают этого с помощью настраиваемого номер форматчик, который имеет минимальное/максимальное допустимое значение, например:

NSNumberFormatter* formatter= [[NSNumberFormatter alloc]init]; 
formatter.numberStyle= NSNumberFormatterDecimalStyle; 
formatter.allowsFloats= NO; 
formatter.maximum= @103; 
formatter.minimum= @23; 

Затем разрешить пользователю возвращаться, только если форматтер возвращает действительный номер:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    return [formatter numberFromString: textField.text]!= nil; 
} 
0

Попробуйте это. Если вы хотите установить диапазон для определенного текстового поля.

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

{

if(textField == self.txtMobileNumber) 
{ 
    if (textField.text.length >= 10 && range.length == 0) 
     return NO; 
} 
} 
Смежные вопросы