MST

星途 面试题库

面试题:Objective-C中ReactiveCocoa的事件绑定与处理

在Objective-C项目中使用ReactiveCocoa,假设你有一个UITextField,需要在用户输入内容变化时进行实时校验,并且当校验通过时,按钮可点击。请描述实现此功能的关键步骤及代码示例。
35.2万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

关键步骤

  1. 引入ReactiveCocoa框架。
  2. UITextField的文本变化事件进行绑定。
  3. 在绑定的闭包中进行实时校验。
  4. 将校验结果绑定到按钮的enabled属性上。

代码示例

#import <ReactiveCocoa/ReactiveCocoa.h>

@interface ViewController ()
@property (nonatomic, strong) UITextField *textField;
@property (nonatomic, strong) UIButton *button;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 40)];
    [self.view addSubview:self.textField];
    
    self.button = [UIButton buttonWithType:UIButtonTypeSystem];
    self.button.frame = CGRectMake(100, 200, 200, 40);
    [self.button setTitle:@"按钮" forState:UIControlStateNormal];
    [self.view addSubview:self.button];
    
    @weakify(self);
    RACSignal *textSignal = [self.textField.rac_textSignal map:^id(NSString *text) {
        @strongify(self);
        // 这里进行校验,例如判断文本长度是否大于0
        return @(text.length > 0);
    }];
    
    RAC(self.button, enabled) = textSignal;
}

@end