Есть ли способ обработать одноразовое нажатие кода, ограничивая другие записи клавиатуры?
У меня есть требование к текстовому полю OTP, чтобы предварительно заполнить код OTP смс.
Пользователь не должен вводить OTP вручную с помощью цифровых кнопок клавиатуры.
IOS 12 у нас есть опция одноразового кода, она будет автоматически заполнена в панели быстрого набора, и пользователь может нажать на нее, чтобы заполнить текстовое поле. Я не могу найти возможность ограничить другие записи клавиатуры.
Есть ли способ, которым мы можем разрешить только одноразовое нажатие кода и ограничение любой записи с цифровой клавиатуры.
Я попытался создать 6 текстовых полей.
Первый тип содержимого текстового поля установлен как One Time code.
UserInteractionEnabled только для первого текстового поля, чтобы пользователь не мог вводить данные в другие поля.
Как только я получаю OTP и нажимает на панель QuickType - одноразовый код, я заполняю все текстовые поля.
viewdidload>
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)
}
}
Проблема здесь в том, что первое текстовое поле активно, когда клавиатура открывается, у пользователя есть возможность ввода числовых данных с клавиатуры.
Мне нужно разрешить только одноразовое нажатие кода при открытии клавиатуры.