反应性文本字段信号不会在删除时触发
Reactive textfield signal doesn't fire on delete
我有一个 UITextField
并尝试对 textField.text
变化做出反应:
self.textField.delegate = self;
[self.textField.rac_textSignal map:^id(NSString *text) {
return @(YES); // breakpoint here
}];
我运行通过tutorial学习ROC
。我注意到,当我输入新字符时会调用该块,但当我删除旧字符时不会调用该块。如何修复它..?我希望在删除前一个字符时调用该操作。
例如:左边是里面的东西 textField.text
,右边是发生了什么:
a
- 命中断点
ab
- 命中断点
abc
- 命中断点
ab
- 没有任何反应
免责声明:因为我只是在学习这个框架,不想在不同版本上迈出第一步,所以我使用相同版本的 ROC
如教程中所示:
pod 'ReactiveCocoa', '2.1.8'
您可以查看此代码是否运行良好,而不是您的代码。
[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);
}];
我有一个 UITextField
并尝试对 textField.text
变化做出反应:
self.textField.delegate = self;
[self.textField.rac_textSignal map:^id(NSString *text) {
return @(YES); // breakpoint here
}];
我运行通过tutorial学习ROC
。我注意到,当我输入新字符时会调用该块,但当我删除旧字符时不会调用该块。如何修复它..?我希望在删除前一个字符时调用该操作。
例如:左边是里面的东西 textField.text
,右边是发生了什么:
a
- 命中断点ab
- 命中断点abc
- 命中断点ab
- 没有任何反应
免责声明:因为我只是在学习这个框架,不想在不同版本上迈出第一步,所以我使用相同版本的 ROC
如教程中所示:
pod 'ReactiveCocoa', '2.1.8'
您可以查看此代码是否运行良好,而不是您的代码。
[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);
}];