gpt4 book ai didi

swift - 更改 UITextField 的文本不会触发 rx.text Binder

转载 作者:可可西里 更新时间:2023-10-31 23:56:41 31 4
gpt4 key购买 nike

我有一个 UITextField称为 commentField 我创建了一个 Observable<Bool>像这样:

let isCommentFieldValid = self.commentField.rx.text.orEmpty.map({ !$0.isEmpty })

此可观察对象确定按钮是否启用。问题是当我更改 commentField 的文本属性时喜欢这个:

self.commentField.text = ""

isCommentFieldValid 不会再次触发,因此按钮的状态不会改变。使用 UI 的任何版本都有效:如果我通过键盘从字段中删除所有文本,isCommentFieldValid 会更新,但通过代码不会。

为什么这不起作用?

最佳答案

如果您查看 rx.text 的底层实现,您会发现它依赖于以下 UIControlEvents:.allEditingEvents.valueChanged。在 UITextField 上显式设置 text 属性不会为这些事件发送操作,因此您的可观察对象不会更新。您可以尝试显式发送操作:

self.commentField.text = ""
self.commentField.sendActions(for: .valueChanged)

关于swift - 更改 UITextField 的文本不会触发 rx.text Binder ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51330906/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com