SwiftUI SecureField 跟踪活动/非活动状态

Posted

技术标签:

【中文标题】SwiftUI SecureField 跟踪活动/非活动状态【英文标题】:SwiftUI SecureField Keep Track of Active/Inactive State 【发布时间】:2019-07-01 15:23:27 【问题描述】:

我需要跟踪 SecureField 是否处于活动状态(即显示键盘)

对于常规的 TextField,我使用 onEditingChanged,它会为我提供一个布尔值,如果它是活动的还是非活动的

SecureField 没有这个方法。如何跟踪活动状态?

【问题讨论】:

嗯...这是一个丑陋的 hack,但是如果您的视图中有一个 SecureField,您可以收听 keyBoardWillShow 通知并跟踪所有其他 TextField。如果没有激活 (onEditingChanged),那么它必须是您的 Securefield。可怕,我知道。我认为将其报告为错误是个好主意。 不幸的是,即使那个 hack 对我也不起作用,因为我的视图上会有 2 个 SecureFields:输入密码并确认密码 这仍然不是一个解决方案,但是您知道您可以通过使用 Combine: if myvar 是您使用的 @State/@Binding 变量来为安全字段中键入的每个字符挂钩SecureField,你可以这样做:myvar.publisher().sink c in print("character: (c)") 。不幸的是,当该字段被激活时,发布者什么也不做。但至少你可以知道哪个是最后使用的字段。 【参考方案1】:

暂时没有解决办法。 SwiftUI 仍处于开发阶段,目前 SecureField 不存在此事件处理程序。

我最近遇到了这个问题,我把所有的标签都做成State变量,这样控制

Text(username != "" ? usernamePlaceholder:" ").font(.subheadline)

【讨论】:

以上是关于SwiftUI SecureField 跟踪活动/非活动状态的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 在禁用的 SecureField 中检测水龙头?

SecureField 的 .newPassword 选择强密码不使用 SwiftUI 和 iOS14

在 SwiftUI 中向 TextField/SecureField 添加图像,向占位符文本添加填充

在 SwiftUI 视图中的 TextField 后面使用多个 SecureField 时的奇怪行为

SwiftUI SecureField:如何实现与 UIKit 中相同的字符模糊行为?

如何跨 SwiftUI 应用程序跟踪所有触摸