From 2038e845084eb1f1c87ba5cb81fd77a50632ab1c Mon Sep 17 00:00:00 2001 From: MominaNTL Date: Wed, 13 Nov 2024 15:04:12 +0500 Subject: [PATCH] add clear field fucntionality. user can clear all textfields with an API now provided. --- .../UserInterfaceState.xcuserstate | Bin 0 -> 15860 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++++++ OTPFieldView/OTPFieldView.swift | 25 ++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/momina.abbasi.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 OTPFieldView.xcodeproj/xcuserdata/momina.abbasi.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/momina.abbasi.xcuserdatad/UserInterfaceState.xcuserstate b/OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/momina.abbasi.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8d36f8c187973396cae3ade9de530961415ae556 GIT binary patch literal 15860 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 + + + + SchemeUserState + + OTPFieldView.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/OTPFieldView/OTPFieldView.swift b/OTPFieldView/OTPFieldView.swift index bcee25d..8cf2680 100644 --- a/OTPFieldView/OTPFieldView.swift +++ b/OTPFieldView/OTPFieldView.swift @@ -341,3 +341,28 @@ extension OTPFieldView: UITextFieldDelegate { calculateEnteredOTPSTring(isDeleted: true) } } +extension OTPFieldView { + public func clearAllTextFields() { + // Iterate through all OTP text fields and clear their text + for index in stride(from: 0, to: fieldsCount, by: 1) { + if let otpField = viewWithTag(index + 1) as? OTPTextField { + otpField.text = "" + secureEntryData[index] = "" + + // Reset background and border colors to default + if displayType == .diamond || displayType == .underlinedBottom { + if let shapeLayer = otpField.shapeLayer { + shapeLayer.fillColor = defaultBackgroundColor.cgColor + shapeLayer.strokeColor = defaultBorderColor.cgColor + } + } else { + otpField.backgroundColor = defaultBackgroundColor + otpField.layer.borderColor = defaultBorderColor.cgColor + } + } else { + // Handle case when otpField is not found (optional) + print("Warning: OTP field with tag \(index + 1) not found.") + } + } + } +}