DPOTPView
Customisable OTP view and Passcode view
Installation with CocoaPods
CocoaPods is a dependency manager for Objective-C & Swift. You can install it with the following command:
$ gem install cocoapods
Podfile
To integrate DPOTPView into your Xcode project using CocoaPods, specify it in your Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'TargetName' do
use_frameworks!
pod 'DPOTPView'
end
Then, run the following command:
$ pod install
Installation with Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate DPOTPView
into your Xcode project using Carthage, specify it in your Cartfile
:
github "Datt1994/DPOTPView"
Run carthage
to build the framework and drag the framework (DPOTPView.framework
) into your Xcode project.
Note: IBDesignables and IBInspectables will not work in interface builder.
Workaround: Create IBDesignable subclass of DPOTPView, Use this subclass as custom calss in interface builder.
@IBDesignable
class OTPView : DPOTPView {}
Installation with Swift Package Manager
The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift
compiler.
To add the library as package dependency to your Xcode project, select File > Swift Packages > Add Package Dependency and enter its repository URL https://github.com/Datt1994/DPOTPView.git
Add Manually
Download Project and copy-paste DPOTPView.swift
file into your project
How to use
Code
Set up through code
let txtOTPView = DPOTPView(frame: CGRect(x: (self.view.frame.width - 250)/2, y: txtDPOTPView.frame.origin.y + 50, width: 250, height: 60))
txtOTPView.count = 5
txtOTPView.spacing = 10
txtOTPView.fontTextField = UIFont(name: "HelveticaNeue-Bold", size: CGFloat(25.0))!
txtOTPView.dismissOnLastEntry = true
txtOTPView.borderColorTextField = .black
txtOTPView.selectedBorderColorTextField = .blue
txtOTPView.borderWidthTextField = 2
txtOTPView.backGroundColorTextField = .lightGray
txtOTPView.cornerRadiusTextField = 8
txtOTPView.isCursorHidden = true
//txtOTPView.isSecureTextEntry = true
//txtOTPView.isBottomLineTextField = true
//txtOTPView.isCircleTextField = true
view.addSubview(txtOTPView)
Usage
txtDPOTPView.text = "1234" // set text
print(txtDPOTPView.text ?? "") // get text
txtDPOTPView.validate() // validate all text entry
_ = txtDPOTPView.becomeFirstResponder()
Delegate Methods
extension ViewController : DPOTPViewDelegate {
func dpOTPViewAddText(_ text: String, at position: Int) {
print("addText:- " + text + " at:- \(position)" )
}
func dpOTPViewRemoveText(_ text: String, at position: Int) {
print("removeText:- " + text + " at:- \(position)" )
}
func dpOTPViewChangePositionAt(_ position: Int) {
print("at:-\(position)")
}
func dpOTPViewBecomeFirstResponder() {
}
func dpOTPViewResignFirstResponder() {
}
}