2014-11-03 2 views
0

Начинающий здесь, надеюсь, простой вопрос о предотвращении дублирования кода.Проверка UITextView с повторным использованием кода

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

т.е.

-(BOOL)textField:(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 
+0

Имейте метод класса проверки на каком-либо объекте утилиты. –

+0

Есть ли общий делегат? –

+0

@IanMacDonald, вы имеете в виду AppDelegate? – SimplyLearning

ответ

0

Вы могли бы сделать класс специально для этой цели. Если вам нужно сделать специальные файлы UITextFieldDelegate, вы можете либо подклассы этого класса, либо присоединить к нему свой собственный делегат.

@interface TextValidationDelegate : NSObject <UITextFieldDelegate> 
@property (weak) id<UITextFieldDelegate> delegate; 
@end 

@implementation TextValidationDelegate 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    BOOL acceptable = YES; 
    // TODO: Calculate acceptability. 
    // ... 

    if (acceptable && [self.delegate respondsToSelector:@selector(textField:shouldChangeCharactersInRange:replacementString:)]) { 
    acceptable = [self.delegate textField:textField shouldChangeCharactersInRange:range replacementString:string]; 
    } 

    return acceptable; 
} 

// TODO: Override other UITextFieldDelegate methods and pass through to self.delegate when it respondsToSelector. 
@end