我正在实施聊天用户界面,并使用Reactive Cocoa根据用户类型调整聊天气泡的大小。目前,我正在根据textview rac_textSignal
更新UI的布局。一切都很好 - 除了一点:当用户发送消息时,我以编程方式清除文本字段:
_inputTextView.text = @"";
...但textview的rac_textSignal
未激活。 I hear this is a feature with ReactiveCocoa - 但建立这个的正确方法是什么?我是否需要拥有一个持有currentlyTypedString
的NSString,并在该字符串更新时驱动UI更改?
答案 0 :(得分:9)
发送动作:
[self.inputTextView sendActionsForControlEvents:UIControlEventEditingChanged];
答案 1 :(得分:7)
在MVVM下,视图模型应被视为UI数据和事件的规范来源(这会带来一系列重要的好处,例如更好的可测试性)。您将已键入的NSString
存储在视图模型上,然后将 绑定到UI。
使用MVC,您必须使用控制器或模型,但原则是相同的:将视图视为瞬态数据并在其他地方执行重要操作。
答案 2 :(得分:0)
以下是一种有效的解决方法:
[[RACSignal
merge:@[self.inputTextView.rac_textSignal, RACObserve(self.inputTextView, text)]]
subscribeNext:^(NSString* text) {
// do something here
}];
Thanks to startupthekid在GitHub上。