我想知道为什么以下代码不起作用:
RACDisposable *subscr;
subscr = [[[RACObserve(self.myTextView, text) filter:^BOOL(NSString* value) {
return value != nil;
}]
// Map
map:^id(NSString * value) {
return [NSString stringWithFormat:@"Shock the %@", value];
}]
setKeyPath:@keypath(self.testLabel, text) onObject:self.testLabel];
NSLog(@"test label text? %@", self.testLabel.text);
当我更改文本(在textField中键入它)时,没有任何作用。我知道有类似的方法:
RAC(self, testString) = [self.myTextField.rac_textSignal map:^id(NSString* value) {
但我的观点是测试RACObserve。当我“观察”其他属性时,上面的代码工作。
答案 0 :(得分:1)
RACObserve
使用键值观察。 UIKit中的大多数属性(包括UITextView.text
)都不符合KVO标准。
这就是为什么存在像rac_textSignal
这样的辅助信号的原因。如果每次文本更改时都需要触发信号,请使用它们。