2016-11-01 4 views
0

У меня есть 2 вопросаUITextField с форматом ввода

1) Если текстовое поле ввести 10 цифр, после того, как раз ударяя 10 цифр это вызвать функцию (MYFUNCTION), у меня есть ниже код, чтобы установить длину 10 цифр, ниже кода работы когда я нажимаю 11-ю цифру.

#define MAX_LENGTH 10 

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

    if (textField.text.length >= MAX_LENGTH && range.length == 0) 
    { 
     [self myFunction];//not working it works when 11th time key is press 
     return NO; // return NO to not change text 
    } 
    return YES; 

} 


-(void) myFunction 
{ 
// do my stuff here 
} 

2) Мой второй вопрос касается формата ввода кредитной карты с несколькими TextField. у меня есть 3 текстовое поле, в котором я должен ввести 4 цифры каждый, ниже мой код работает отлично, но он также работает на пресс-5-раз (например, изменение текстовое поле поле)

enter image description here

в viewDidLoad

ответ

1

Пожалуйста, проверьте мой ответ

- (void)viewDidLoad 
{ 
    [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 
} 

- (void)textFieldDidChange:(UITextField *)textField 
{ 
    if (textField.text.length > MAX_LENGTH) 
    { 
     textField.text = [textField.text substringToIndex:MAX_LENGTH]; 
    } 
} 
+0

вторая часть? answer – iphonemaclover

+1

Вопрос 2 является продолжением вопроса 1, предоставляет вам два способа: 1. Используя текстовые, каждые четыре автоматических пространства, а затем наложите маску, например, он был во входных данных для пользователей, которые воспринимают три окна. –

+1

2. if (TF_TAG_ONE = = textField. Tag) {If (textField. Text. Length> MAX_LENGTH) {TextField. Текст = [textField. Text substringToIndex: MAX_LENGTH]; Nsstrings * subText = [textField. Text substringFromIndex: MAX_LENGTH]; [self textField_2 статьFirstResponder]; [self textFieldDidChange: self textField_2 withNewText: subText];}} –

1

Try ниже код:

NSString* fullString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

if (fullString.length >= MAX_LENGTH) 
{ 
    [self myFunction];//not working it works when 11th time key is press 
    return NO; // return NO to not change text 
} 
return YES; 

То же самое для # 2.

NSString* fullString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

if (fullString.length > 4) 
{ 
    // any code 
    return NO; 
} 
return YES; 
} 
+0

вторая часть? ответ – iphonemaclover

1

Вы проверяете длину текста старого текста.

if ((textField.text.length >= 4) && (string.length > 0)) 

должен быть

if ((string.length >= 4) && (string.length > 0)) 

Это должно решить обе проблемы.

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