当使用SwiftUI的SecureField时,用户的输入会被模糊/蒙住/立即变成.,这使得很难确认用户实际上输入的密码是正确的。我们的一些用户对此提出了抱怨,似乎大多数人都希望在字符消失前看到他们输入的字符大约一秒钟左右,这使他们从视觉上确认,他们点击了正确的字母,现在可以继续担心了。
是否可以在那里添加一个延迟并显示最后一个键入的字符片刻?
发布于 2021-01-05 07:47:56
我认为目前在SwiftUI中这是不可能的,但这是我们在这段时间使用的黑客。它将一个SecureField堆在一个TextField上,当用户点击眼睛(显示文本)时,它会切换它们的透明度。当然,它会显示整个字符串,而不是最后一个字母,但它可以工作。
我确信在UIKit中可以使用开放源码库来实现这一点,您可以进行转换,但是我会让其他人来回答。
struct SecureTextFieldView: View {
@State var text: String = ""
@State var showText: Bool = false
var body: some View {
ZStack {
TextField("Password", text: $text)
.opacity(showText ? 1.0 : 0.0)
SecureField("Password", text: $text)
.opacity(showText ? 0.0 : 1.0)
}
.padding()
.background(
Color(UIColor.secondarySystemBackground).cornerRadius(10)
)
.overlay(
Image(systemName: "eye.fill")
.foregroundColor(showText ? .black : .gray)
.padding(.trailing)
.onLongPressGesture(minimumDuration: 20, maximumDistance: 30, pressing: { (_) in
showText.toggle()
}, perform: {})
, alignment: .trailing
)
.padding()
}
}
struct SecureTextFieldView_Previews: PreviewProvider {
static var previews: some View {
SecureTextFieldView()
}
}https://stackoverflow.com/questions/65573563
复制相似问题