From 9aeba2178dfb8fbce5b5246dc1b4935cec8de168 Mon Sep 17 00:00:00 2001 From: tunt Date: Fri, 11 Jun 2021 11:05:16 +0700 Subject: [PATCH 1/3] feat: support setting full code programmatically f d --- .../UserInterfaceState.xcuserstate | Bin 0 -> 16853 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++++++++++ OTPFieldView/OTPFieldView.swift | 10 +++++++++- README.md | 9 +++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/callie.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 OTPFieldView.xcodeproj/xcuserdata/callie.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/callie.xcuserdatad/UserInterfaceState.xcuserstate b/OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/callie.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..7a1feee28c81c3b65a2abc74feb89a97e76b3fcc GIT binary patch literal 16853 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 + + + + SchemeUserState + + OTPFieldView.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/OTPFieldView/OTPFieldView.swift b/OTPFieldView/OTPFieldView.swift index bcee25d..110efd9 100644 --- a/OTPFieldView/OTPFieldView.swift +++ b/OTPFieldView/OTPFieldView.swift @@ -243,7 +243,15 @@ import UIKit } } } - + + public func setFullOTPCode(_ code: String) { + secureEntryData = code.map { String($0) } + for index in 0 ..< secureEntryData.count { + if let otpField = viewWithTag(index + 1) as? OTPTextField { + otpField.text = secureEntryData[index] + } + } + } } extension OTPFieldView: UITextFieldDelegate { diff --git a/README.md b/README.md index bc57408..21e6ae5 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,15 @@ extension OtpViewController: OTPFieldViewDelegate { - **shouldBecomeFirstResponderForOTP()**: Show keyboard automatically. - **enteredOTP()**: Get entered pin. + +### Set full otp code + +```swift +self.otpTextFieldView.setFullOTPCode("22222") +``` + +- **setFullOTPCode()**: Use in case of setting OTP code in OTPTextViewField programmatically. + ### Properties - **.displayType**: Display type for Text Field. From 0c113cd341fe620956582b699fe9567838482ed3 Mon Sep 17 00:00:00 2001 From: tunt Date: Mon, 14 Jun 2021 15:30:18 +0700 Subject: [PATCH 2/3] Revert "feat: support setting full code programmatically" This reverts commit 9aeba2178dfb8fbce5b5246dc1b4935cec8de168. --- .../UserInterfaceState.xcuserstate | Bin 16853 -> 0 bytes .../xcschemes/xcschememanagement.plist | 14 -------------- OTPFieldView/OTPFieldView.swift | 10 +--------- README.md | 9 --------- 4 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/callie.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 OTPFieldView.xcodeproj/xcuserdata/callie.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/callie.xcuserdatad/UserInterfaceState.xcuserstate b/OTPFieldView.xcodeproj/project.xcworkspace/xcuserdata/callie.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 7a1feee28c81c3b65a2abc74feb89a97e76b3fcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16853 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 - - - - SchemeUserState - - OTPFieldView.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/OTPFieldView/OTPFieldView.swift b/OTPFieldView/OTPFieldView.swift index 110efd9..bcee25d 100644 --- a/OTPFieldView/OTPFieldView.swift +++ b/OTPFieldView/OTPFieldView.swift @@ -243,15 +243,7 @@ import UIKit } } } - - public func setFullOTPCode(_ code: String) { - secureEntryData = code.map { String($0) } - for index in 0 ..< secureEntryData.count { - if let otpField = viewWithTag(index + 1) as? OTPTextField { - otpField.text = secureEntryData[index] - } - } - } + } extension OTPFieldView: UITextFieldDelegate { diff --git a/README.md b/README.md index 21e6ae5..bc57408 100644 --- a/README.md +++ b/README.md @@ -87,15 +87,6 @@ extension OtpViewController: OTPFieldViewDelegate { - **shouldBecomeFirstResponderForOTP()**: Show keyboard automatically. - **enteredOTP()**: Get entered pin. - -### Set full otp code - -```swift -self.otpTextFieldView.setFullOTPCode("22222") -``` - -- **setFullOTPCode()**: Use in case of setting OTP code in OTPTextViewField programmatically. - ### Properties - **.displayType**: Display type for Text Field. From dc13fe1aed8852980053317d6f81e56bba068191 Mon Sep 17 00:00:00 2001 From: tunt Date: Mon, 14 Jun 2021 15:32:09 +0700 Subject: [PATCH 3/3] add set otp code programtically --- OTPFieldView/OTPFieldView.swift | 9 +++++++++ README.md | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/OTPFieldView/OTPFieldView.swift b/OTPFieldView/OTPFieldView.swift index bcee25d..b312077 100644 --- a/OTPFieldView/OTPFieldView.swift +++ b/OTPFieldView/OTPFieldView.swift @@ -243,6 +243,15 @@ import UIKit } } } + + public func setFullOTPCode(_ code: String) { + secureEntryData = code.map { String($0) } + for index in 0 ..< secureEntryData.count { + if let otpField = viewWithTag(index + 1) as? OTPTextField { + otpField.text = secureEntryData[index] + } + } + } } diff --git a/README.md b/README.md index bc57408..21e6ae5 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,15 @@ extension OtpViewController: OTPFieldViewDelegate { - **shouldBecomeFirstResponderForOTP()**: Show keyboard automatically. - **enteredOTP()**: Get entered pin. + +### Set full otp code + +```swift +self.otpTextFieldView.setFullOTPCode("22222") +``` + +- **setFullOTPCode()**: Use in case of setting OTP code in OTPTextViewField programmatically. + ### Properties - **.displayType**: Display type for Text Field.