删除时不会激活反应式文本字段信号

时间:2015-10-13 12:55:30

标签: ios objective-c reactive-programming reactive-cocoa

我有textField.text并尝试对self.textField.delegate = self; [self.textField.rac_textSignal map:^id(NSString *text) { return @(YES); // breakpoint here }]; 更改作出反应:

ROC

我正在浏览tutorial以了解textField.text。我注意到,当我输入新字符时会调用该块,但是当我删除旧字符时则不会。如何解决..?我希望在删除前一个字符时调用该操作。

例如:左边是a里面的内容,右边是什么:

  • ab - 点击断点
  • abc - 点击断点
  • ab - 点击断点
  • ROC - 没有任何反应

免责声明:由于我刚学习这个框架并且不想在不同版本上做出第一步,我使用相同版本的{{1}在教程中:

pod 'ReactiveCocoa', '2.1.8'

1 个答案:

答案 0 :(得分:1)

您可以检查此代码是否正常而非您的代码。

[self.usernameTextField.rac_textSignal subscribeNext:^(id x) {
  NSLog(@"%@", x);
}];

不同之处在于我的代码有一个subscribeNext:方法调用。 这里的基本概念是您需要订阅来执行代码。 map:是仅在数据到达时更改输入数据的运算符。 subscribeNext: / subscribeCompleted: / subscribeError:是强制信号将数据发送到ReactiveCocoa链中的根本原因。

您可能应该阅读ReactiveCocoa团队的official framework overview

<强>更新

对于将subscribeNext应用到最后的当前情况,将解决问题:

[[self.usernameTextField.rac_textSignal 
   map:^id(id x) { 
     NSLog(@"%@", x);
     return x;
}] 
   subscribeNext:^(id x) { 
     NSLog(@"%@", x); 
}];