这里有ReactiveCocoa和ReactiveSwfit的新手......如果答案很明显,很抱歉。
我正在尝试将Start Developing iOS Apps with Swift示例调整为ReactiveSwift / ReactiveCocoa,而我遇到的问题是"翻译" UITextField
的委托方法 - 摆脱键盘并基本上结束编辑(因此我可以捕获mealNameLabel
中的文本字段):
我正在使用
nameTextField.reactive.textValues.observeValues { value in
viewModel.mealName.swap(value ?? "")
}
// Setup bindings to update the view's meal label
// based on data from the View Model
mealNameLabel.reactive.text <~ viewModel.mealLabel
从文本字段中获取值到视图模型中,并将视图模型的标签渗透回UILabel(复杂...)
只要我将viewController
维护为UITextField
代理,我仍然可以实现上面提到的教程中描述的方法。基本上:
override func viewDidLoad() {
super.viewDidLoad()
nameTextField.delegate = self
// view controller logic
...
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// Hide the keyboard.
textField.resignFirstResponder()
return true
}
我尝试使用
nameTextField.reactive.controlEvents
但是由于我对controlEvents
(任何地方的文档?)缺乏了解而失败了。
那么当用户完成编辑时,我需要做些什么来使键盘消失,&#34;反应方式&#34; ?
谢谢!!!
答案 0 :(得分:1)
(当然我发布问题后......)
看起来这实际上可能就是这个伎俩:
nameTextField.reactive.controlEvents(UIControlEvents.primaryActionTriggered)
.observeValues { textField in
textField.resignFirstResponder()
}
在摆弄不同的事件类型之后,看起来.primaryActionTriggered
是&#34; Done&#34;按下按钮。
有更好的方法吗?