【发布时间】:2021-07-12 18:29:28
【问题描述】:
我正在使用 SwiftUI 编写一个 iOS 应用程序。作为提供的数据的一部分,我需要一个带有显示/隐藏按钮的密码字段,该按钮可以在隐藏/可见之间切换。为此,我使用了 SwiftUI 的 SecureField 和 TextField 控件的组合。两者都处于disabled 状态以防止用户编辑,因为我希望此字段为只读。此设置运行良好。 (见下方截图)
现在我想添加功能,让用户只需点击它即可将密码复制到剪贴板。我在SecureField 中添加了一个onTapGesture 块,但它从未被调用。我相信这是因为我的SecureField/TextField 被标记为禁用。我的代码的 sn-p 如下:
ZStack(alignment: .trailing) {
if isSecured {
VStack {
SecureField("", text: Binding.constant(text))
.disabled(true)
.onTapGesture {
print("USER TAPPED!")
}
}
} else {
TextField("", text: Binding.constant(text))
.disabled(true)
}
Image(systemName: self.isSecured ? "eye" : "eye.slash")
.accentColor(.gray)
.foregroundColor(.gray)
.frame(width: 20, height: 20, alignment: .center)
.modifier(TouchDownUpEventModifier(changeState: { (buttonState) in
withAnimation {
self.isSecured.toggle()
}
}))
}
有没有办法做到这一点?我希望我的SecureField/TextField 是只读的,但仍能检测到用户何时点击控件?
【问题讨论】:
标签: ios swiftui textfield securefield