Как создать пользовательское текстовое поле OTP в iOS?
Я разрабатываю приложение для экрана входа в систему, в котором я должен реализовать экран проверки OTP. Я погуглил и нашел эта статья, это то же самое, что я хочу реализовать и в своем приложении. Но когда я сделал реализацию и попытался запустить свое приложение, то не получил само текстовое поле.
Что я уже пробовал:
Я скопировал и вставил тот же код, что и в учебнике, но не получаю того же результата.
<pre>import UIKit class OTPView: UIStackView { var textFieldArray = [OTPTextField]() var numberOfOTPdigit = 4 override init(frame: CGRect) { super.init(frame: frame) setupStackView() setTextFields() } required init(coder: NSCoder) { super.init(coder: coder) setupStackView() setTextFields() } //To setup stackview private func setupStackView() { self.backgroundColor = .clear self.isUserInteractionEnabled = true self.translatesAutoresizingMaskIntoConstraints = false self.contentMode = .center self.distribution = .fillEqually self.spacing = 5 } //To setup text fields private func setTextFields() { for i in 0..<numberOfOTPdigit { let field = OTPTextField() textFieldArray.append(field) addArrangedSubview(field) field.delegate = self field.backgroundColor = .lightGray field.layer.opacity = 0.5 field.textAlignment = .center field.layer.shadowColor = UIColor.black.cgColor field.layer.shadowOpacity = 0.1 i != 0 ? (field.previousTextField = textFieldArray[i-1]) : () i != 0 ? (textFieldArray[i-1].nextTextFiled = textFieldArray[i]) : () } } } extension OTPView: UITextFieldDelegate { func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { guard let field = textField as? OTPTextField else { return true } if !string.isEmpty { field.text = string field.resignFirstResponder() field.nextTextFiled?.becomeFirstResponder() return true } return true } }
Пожалуйста, подтвердите мне, если что - то отсутствует в учебнике или я делаю что-то не так.
Richard MacCutchan
Почему бы не спросить человека, который написал учебник?