Совместно использовать код проверки между различными UITextFields - PullRequest
0 голосов
/ 08 марта 2012

Может быть, это простой вопрос, но я не могу найти правильный способ сделать это.

У меня есть UITextField. Поскольку мне нужно проверить текст, вставленный в это текстовое поле, в настоящее время я использую UITextFieldDelegate метод - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string, например, следующий:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
   // do validation here
   // return YES or NO depending on previous validation
}

Поскольку у меня есть несколько текстовых полей (они не принадлежат одному контроллеру, где выполняется проверка), и я не хочу дублировать код проверки текстовых полей, как я могу добиться элегантного способа централизовать аналогичную проверку? Я не знаю, является ли подклассы правильным способом, но в этом случае мне нужно использовать один и тот же метод делегирования (тот, который указан выше) в разных частях одного и того же приложения.

Заранее спасибо.

1 Ответ

2 голосов
/ 08 марта 2012

Это зависит от того, сколько информации требует ваш код проверки.Если аргументы textField:shouldChangeCharactersInRange:replacementString: - это все, что вам нужно, чтобы определить, возвращать ли YES или NO, тогда вы можете просто использовать один и тот же делегат для всех ваших текстовых полей.

Если вам нужно отслеживать и хранить информацию о предыдущих проверкахдля принятия решений о проверке простейшим способом было бы упаковать все это состояние в объект и получить массив этих объектов, каждый из которых соответствует определенному UITextField.Затем в textField:shouldChangeCharactersInRange:replacementString: вы будете использовать состояние, соответствующее текстовому полю, которое было передано.

...