gpt4 book ai didi

iOS – 在 Swift 中处理 OTP(一次性代码)

转载 作者:行者123 更新时间:2023-11-29 05:39:27 25 4
gpt4 key购买 nike

有没有办法通过限制其他键盘输入来处理一次性代码点击?

我需要 OTP 文本字段来预填充短信 OTP 代码。用户不应使用键盘数字按钮手动输入 OTP。

IOS 12 我们有一次性代码选项,它将自动填充在 QuickType 栏中,用户可以点击它来填充文本字段。我找不到限制其他键盘输入的选项。

有什么办法可以让我们只允许一次性代码点击并限制从数字键盘输入任何内容。

我尝试创建了 6 个文本字段。第一个文本字段内容类型设置为一次性代码。UserInteractionEnabled 仅适用于第一个文本字段,以便用户无法在其他字段中输入数据。一旦我获得 OTP 并点击 QuickType 栏 - 一次性代码,我就会预填写所有文本字段。

查看已加载>

otp1TB.addTarget(self, action:#selector(textFieldDidChange(_:)), for: .editingChanged)


@objc func textFieldDidChange(_ textField: UITextField) {
if let otpCode = textField.text , otpCode.count > 5 {
otp1TB.text = String(otpCode[otpCode.startIndex])
otp2TB.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 1)])
otp3TB.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 2)])
otp4TB.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 3)])
otp5TB.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 4)])
otp6TB.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 5)])
otp1TB.isUserInteractionEnabled = false
self.view.endEditing(true)
}
}

这里的问题是,因为当键盘打开时第一个文本字段处于事件状态,用户可以从键盘输入数字数据。

当键盘打开时,我只需要允许一次代码点击。

最佳答案

我认为您可以跳过这整个复杂性,只使用标准的 iOS 12 OTP 输入类型:

otpTextField.textContentType = .oneTimeCode

参见:Automatic OTP verification in iOS?

以及涵盖它的 WWDC 2018 视频:https://developer.apple.com/videos/play/wwdc2018/204

关于iOS – 在 Swift 中处理 OTP(一次性代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com