首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何延迟SwiftUI的SecureField中字符的模糊/掩蔽,以便每个类型字符在隐藏之前显示1秒?

如何延迟SwiftUI的SecureField中字符的模糊/掩蔽,以便每个类型字符在隐藏之前显示1秒?
EN

Stack Overflow用户
提问于 2021-01-05 05:09:47
回答 1查看 190关注 0票数 1

当使用SwiftUI的SecureField时,用户的输入会被模糊/蒙住/立即变成.,这使得很难确认用户实际上输入的密码是正确的。我们的一些用户对此提出了抱怨,似乎大多数人都希望在字符消失前看到他们输入的字符大约一秒钟左右,这使他们从视觉上确认,他们点击了正确的字母,现在可以继续担心了。

是否可以在那里添加一个延迟并显示最后一个键入的字符片刻?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-05 07:47:56

我认为目前在SwiftUI中这是不可能的,但这是我们在这段时间使用的黑客。它将一个SecureField堆在一个TextField上,当用户点击眼睛(显示文本)时,它会切换它们的透明度。当然,它会显示整个字符串,而不是最后一个字母,但它可以工作。

我确信在UIKit中可以使用开放源码库来实现这一点,您可以进行转换,但是我会让其他人来回答。

代码语言:javascript
复制
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()
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65573563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档