iPhone UITextField фильтрация не работает должным образом - PullRequest
1 голос
/ 10 января 2010

Хорошо, я столкнулся с небольшой проблемой здесь.Я пытаюсь отфильтровать две вещи в моем UITextField.Они включают ограничение количества символов и фильтрацию типов символов.Я могу заставить каждого работать там самостоятельно, но они оба не работают вместе.Это может быть связано с двойным возвратом, idk.Надеюсь, кто-нибудь может посмотреть на мой код и понять, почему они не работают вместе.Я избил себя за это.Спасибо за помощь.

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




svo = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];

NSString *filtered = [[string componentsSeparatedByCharactersInSet:svo] componentsJoinedByString:@""];
BOOL bT = [string isEqualToString:filtered];

return bT;

if (myTextField.text.length >= MAX_LENGTH && range.length == 0)
{
    return NO;
}
else
{
    return YES;
}
}

1 Ответ

2 голосов
/ 10 января 2010

Ваш первый «возврат» - тот, который происходит всегда, потому что здесь вы безоговорочно вызываете «возврат».

Я думаю, что вы хотели написать это:

return bT || myTextField.text.length < MAX_LENGTH || range.length > 0;

По сути, замените ваши «return bT» и «if» на приведенные выше. В основном это означает, что вы возвращаете YES в следующих случаях:

  • В ДА
  • или длина текста в текстовом поле меньше, чем MAX_LENGTH
  • или длина диапазона положительна

во всех остальных случаях вы возвращаете НЕТ.

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