Автоматическая проверка длины текстового поля и использование метода UITextfield

88
12

Здравствуйте, мне нужно ввести номер мобильного телефона с подтверждением того, что диапазон мобильных текстовых полей должен быть 10. И когда значение текстового поля == 10, мне нужно вызвать функцию, когда длина текстового поля mobile равна 10. Мой нижний код работает нормально, но мне нужно нажать Еще 1 символ (средство 11) для его вызова. Пожалуйста, как я ее разрешаю.

#define MAX_LENGTH 10

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

if (textField.text.length >= MAX_LENGTH && range.length == 0)
{

if (textField.text.length==MAX_LENGTH)
{

NSLog(@"Want to call Call method HERE ");

}

return NO; // return NO to not change text
}

}
return YES;
}

спросил(а) 2021-01-19T13:38:05+03:00 2 месяца, 3 недели назад
1
Решение
75

Вы можете получить, что строка будет после изменения символов с помощью метода stringByReplacingCharactersInRange:withString:


#define MAX_LENGTH 10

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == user_mobile_txtField) {
NSString *fullString = [textField.text stringByReplacingCharactersInRange:range withString:string];

if (fullString.length >= MAX_LENGTH && range.length == 0) {
if (fullString.length == MAX_LENGTH) {
NSLog(@"Want to call Call method HERE ");
}
return NO; // return NO to not change text
}
}
return YES;
}

ответил(а) 2021-01-19T13:38:05+03:00 2 месяца, 3 недели назад
76

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

...
//start observing
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textHasChanged:) name:UITextFieldTextDidChangeNotification object:{your UITextField}];
...

- (void)textHasChanged:(NSNotification *)notification {
UITextField *textField = [notification object];
//check if textField.text.length >= 10
//do stuff...
}

ответил(а) 2021-01-19T13:38:05+03:00 2 месяца, 3 недели назад
-4

Пожалуйста, используйте нижеприведенный код -

#define MAX_LENGTH 10

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

if (textField.text.length >= MAX_LENGTH )
{

if (textField.text.length==MAX_LENGTH)
{

NSLog(@"Want to call Call method HERE ");

}

return NO; // return NO to not change text
}

}
return YES;
}

ответил(а) 2021-01-19T13:38:05+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема