带有ReactiveCocoa的textColor

时间:2014-03-11 21:09:31

标签: ios reactive-cocoa

当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];
                                              }
                                  }];

1 个答案:

答案 0 :(得分:0)

假设您的意思是显示字段的验证状态,您可以这样做。还有很多其他方法,但这是我通常使用的方式。

- (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;
}