在iOS 12中,我有一个新的密码文本字段用于注册流程,我希望系统建议一个强大的密码。我也有一个按钮,启用和禁用的基础上委托方法,我做了一些改变等。textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)
这对于在用户点击Use Strong Password
时启用它很有用。但是当用户点击Choose My Own Password
时,我似乎没有得到一个委托回调,结果我的按钮启用/禁用逻辑永远没有机会执行,允许某人用空白密码注册。
当用户点击Choose my own password
时,我可能需要做些什么来获得回调?任何帮助都是非常感谢的。
6条答案
按热度按时间yi0zb3m41#
我也遇到了同样的问题,但我发现唯一提供回调的是
UIView
的viewDidLayoutSubviews
委托。所以我用了这个:
hc2pp10m2#
iOS 13引入了新的委托方法
当强密码被填充并删除时,将调用此函数。它仅在iOS 13中可用。
当文本更改或清除时也会调用它,因此请注意,如果您正在调用
shouldChangeCharactersIn
或使用UIControl.Event.editingChanged
添加了一个操作,这两个方法都会响应shyt4zoc3#
我不太熟悉“使用字符串密码”的委托,但是如果用户选择自己的密码,你需要检查用户在密码文本字段中输入的内容,并验证它是否符合你的标准。
为此,您需要使用其目标
.editingChanged
检查在密码textField中键入的内容。当用户键入任何内容时,它将启用或禁用按钮。看看步骤#3和步骤#4。第4步是什么将切换并决定枯萎启用或禁用按钮。另一件需要注意的事情是,当vc第一次出现时,按钮应该是
disabled
,然后一旦密码textField数据有效,然后启用然后按钮。步骤#1和步骤#4例如,在我的应用程序中,如果用户在密码textField内的所有空格中输入,则注册按钮将被禁用,但如果他们输入有效数据,则按钮将被启用。
更新我在
viewDidLoad
的步骤3A和3B中添加了,因为正如@DawsonToth在评论中正确指出的那样,如果用户选择了强密码,下一步按钮将被启用。但如果他们决定选择“选择我自己的密码”,则passwordTextField将被清除,但“下一步”按钮仍将启用。我没考虑到这点。您需要将
KVO observer
添加到passwordTextField的“text”keypath
,以便每次passwordTextField的文本更改时,handleTextInputChanged()将被调用,从而在文本被清除后禁用下一步按钮。dxpyg8gm4#
我也遇到了同样的问题。我所做的只是计算文本字段的子视图。
我来办理入住手续
bprjcwpo5#
我通过继承UITextField并确定子视图是否包含
UIKBASPCoverView
来解决这个问题。laawzig26#
我也面临着同样的问题。
我通过监听
onEndEditing
事件来更新状态。