如何将NSString绑定到Reactive Cocoa中的UITextView?

bry*_*ark 1 nsstring uitextview ios reactive-cocoa

我正在构建一个iOS社交客户端,在"撰写"视图中,我有一个UITextView用户输入文本的位置.我想使用ReactiveCocoa绑定textUITextViewNSString数据模型的,遵循MVVM.

但是,我遇到了几个问题,都与一件事有关:RACObserve当以UITextView编程方式更改文本时,不会调用块.

(举个例子:我更改文本成属性串突出#哈希标签,@使用者名称等,但是当视图以编程方式改变了这种属性串还没有生成.)

我以前的关于这个主题的问题,我得到了我应该绑定的TextView到模型中一些有用的建议-反之亦然-但我应该如何与活性可可的当前版本做这我不清楚.我设法找到示例代码调用了现在已弃用的API.

什么是绑定的适当方法rac_textSignalUITextView一个NSString(反之亦然),这样当的内容,我可以可靠地调用的代码块UITextView被改变(无论是编程或由用户)?

jos*_*ber 5

答案取决于视图模型textUITextViews 之间的绑定是否text需要双向.一般来说,我们试图远离双向绑定,因为它们变得更难以推理.理想情况下,只有一个方向驱动数据.

那么在这种情况下,你会写下这样的东西:

RAC(self.viewModel, text) = [RACSignal merge:@[ 
                                [self.textView rac_textSignal], 
                                RACObserve(self.textView, text),
                            ]];
Run Code Online (Sandbox Code Playgroud)

这样你就可以直接接受对UITextViews text属性的更改,以及来自用户输入的文本更改.