textColor с ReactiveCocoa

когда вместо этого textField длиннее firstResponder, не отправляет никакого значения сигнала, а цвет текста неправильный, как я могу это исправить?

    RAC(self.textField, textColor) = [RACSignal
                                  combineLatest:@[self.textField.rac_textSignal]
                                         reduce:^(NSString *firstName) {
                                              if (firstName.length > 5) {
                                                  return [UIColor blueColor];
                                              }else{
                                                 return [UIColor redColor];
                                              }
                                  }];

person iAcisclo    schedule 11.03.2014    source источник
comment
Я не на 100% понимаю, что вы пытаетесь сделать. Вы говорите, что цвет текста меняется, когда текстовое поле больше не является первым ответчиком? На что он меняется? Вы пытались зарегистрировать, что такое firstName?   -  person joshaber    schedule 12.03.2014
comment
Я пытаюсь проверить изменение текстового поля с указанием цвета текста, т.е. если текст меньше 5 символов, он должен быть красным, а текстовое поле FirstResponder сделано правильно, но когда вы перестанете быть FirstResponder, хотя текст длиннее, чем 5 символов станут красными. Я ценю помощь.   -  person iAcisclo    schedule 12.03.2014


Ответы (1)


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

- (void)viewDidLoad {
    [super viewDidLoad];

    // =====================================
    // Other Initialisation Code Here
    // =====================================

    RACSignal *validTextFieldSignal =
        [self.textField.rac_textSignal
            map:^id(NSString *text) {
                return @([self isValidTextField:text]);
            }];


     RAC(self.textField, textColor) =
                [validTextFieldSignal
                    map:^id(NSNumber *textFieldValid) {
                        return [textFieldValid boolValue] ? [UIColor blueColor] : [UIColor redColor];
                    }];
end

- (BOOL)isValidTextField:(NSString *)textField {
    return textField.length > 5;
}
person Dave Green    schedule 12.08.2014