2015-05-27 4 views
0

Я использовал RACObserve для создания сигнала, но он не работает, а rac_textSignal в порядке. Вот мой код:Кажется, что RACObserve не работает хорошо

[RACObserve(self, searchText.text); subscribeNext: ^(id newName){ 
    NSLog(@"newName:%@", newName); 
}]; 
[self.searchText.rac_textSignal subscribeNext: ^(id newName){ 
    NSLog(@"newName:%@", newName); 
}]; 

Когда приложение запускается, как печать сигнала вне NEWNAME с нулевой value.But каждый раз, когда я изменить текст в текстовом поле, только второй signl будет работать и печать последний текст в текстовом значении. Первый сигнал никогда ничего не печатает.

+5

'RACObserve' работает только для свойств, совместимых с ключом, из которых' 'UITextVIew' и' UITextField' 'не являются (следовательно, включены помощники' rac_textSignal'). –

+0

Понял. Большое спасибо. Но как я могу узнать, соответствует ли свойство ключевым требованиям? – sevenkplus

+0

:(Как я знаю, это чистый фольклор. * Некоторые * библиотеки - и я имею в виду крошечную часть - явно документируют соответствие KVO для свойств. Другие предполагают, что все свойства KVO-совместимы. Другие предполагают, что нет. 'UIKit', вы должны предположить, что свойства * no * являются KVO-совместимыми. Даже если это работает сейчас, будущая версия iOS может удалить это свойство. Просто происходит« случайно »с некоторыми свойствами. –

ответ

0
RACSignal * searchSignal = [RACSignal merge:@[RACObserve(self.searchTextfield, text), self. searchTextfield.rac_textSignal]]; 

searchSignal будет огонь с любым из searchTextField изменений - в коде с searchField.text собственности или с пользователем.

Смежные вопросы