Reactivo del cocoa: el rac_textSignal de UITextView no recibe llamadas cuando se configura text mediante progtwigción

Estoy implementando una interfaz de usuario de chat, y usando Reactivo Cocoa para ajustar el tamaño de la burbuja de chat a medida que el usuario escribe. Actualmente, estoy actualizando el layout de la interfaz de usuario basado en el text de text rac_textSignal . Todo funciona bien, excepto por un bit: cuando el usuario envía el post, borro el campo de text mediante progtwigción:

 _inputTextView.text = @""; 

… pero el rac_textSignal de rac_textSignal no se activa. He oído que esta es una característica de ReactiveCocoa , pero ¿cuál es la forma correcta de build esto? ¿Necesito tener un NSString que contenga el CurrentTypedString, y maneje los cambios de la interfaz de usuario cuando se actualiza esa cadena?

Sí, eso es correcto.

Bajo MVVM , el model de vista debe considerarse la fuente canónica de datos y events de UI (lo que conduce a una gran cantidad de beneficios importantes, como una mejor capacidad de testing). Almacenarías el NSString escrito en el model de vista, luego lo NSString a la interfaz de usuario.

Con MVC, tendría que usar el controller o el model en su lugar, pero el principio es el mismo: trate la vista como datos transitorios y haga las cosas importantes en otro lugar.

Simplemente envía una acción:

[self.inputTextView sendActionsForControlEvents: UIControlEventEditingChanged];

La siguiente es una solución que funciona:

 [[RACSignal merge:@[self.inputTextView.rac_textSignal, RACObserve(self.inputTextView, text)]] subscribeNext:^(NSString* text) { // do something here }]; 

Gracias a startupthekid en GitHub.