绑定文本字段文本以启用按钮不起作用

Binding textfield text to enable button not working

我是响应式编程的新手,尤其是 Bond 框架。我知道我可能在对这种编程技术的基本理解上做错了事情。是这样的情况:

我有一个 UITextView 和一个 "approve" UIButton。 我希望仅当 textView 中的文本不为零时才启用批准按钮。我尝试将这些代码行添加到我的 ViewController.

中的 viewDidLoad 方法中
    textView.reactive.text.observeNext{(text) in
        self.message = text
        print(text)
    }
    textView.reactive.text.map { [=10=] != nil}.bind(to: approveButtonOutlet.reactive.isEnabled)

第一个操作有效(在每次输入更改时都成功打印文本)。 第二个不起作用,当文本不为 nil 和为 nil 时按钮都启用。

感谢任何帮助。

你可以试试

 RAC(self.approveButtonOutlet, enabled) = [self.textView.rac_textSignal map:^id(NSString *text) {
      return @(text.length > 0);
    }];

我不确定 swift 3 会怎么样

RAC(self.approveButtonOutlet, enabled) = self.textView.rac_textSignal.map({(text: String) -> void in
    return (text.length > 0)
})

我发现问题是我的 textView 中有一个占位符,它阻止了文本真正为零。所以我最终做的是:

    textView.reactive.text.map {
        if [=10=] == placeholder {
            return false
        } else if [=10=] != nil {
            return [=10=]!.characters.count > 0
        } else{
            return false
        }
        }.bind(to: approveButtonOutlet.reactive.isEnabled)