Прежде всего, вы должны поместить свои поля в массив:
var otpFields: [UITextField] {
return [textOTP1!, textOTP2!, textOTP3!, textOTP4!, textOTP5!, textOTP6!]
}
Тогда получить полный ввод очень просто:
let otpCode = otpFields.compactMap { $0.text }.joined()
Также обратите внимание, что размещение полей в массиве может значительно упростить ваш код, например, :
if (textField.text!.count < 1) && (string.count > 0) {
guard let index = otpFields.index(where: { $0 === textField }) else { return }
if index + 1 < fields.count {
otpFields[index + 1].becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
}