2016-02-11 57 views
0

我不知道爲什麼下面的代碼無法正常工作:RACObserver不按照屬性來更改

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); 

當我改變文本(文本字段中鍵入它)沒有工作。我知道有這樣的方法:

RAC(self, testString) = [self.myTextField.rac_textSignal map:^id(NSString* value) { 

但我的觀點是測試RACObserve。當我「觀察」其他屬性時,上面的代碼工作。

回答

1

RACObserve在引擎蓋下使用鍵值觀察。 UIKit中的大部分屬性(包括UITextView.text)都不符合KVO標準。

這就是爲什麼幫助信號像rac_textSignal存在。如果每次文本更改時都需要發出信號,請使用它們。