KAPinField
Lightweight pin code field library for iOS, written in Swift. This library also plays well with the all new iOS 12 one time password autofill.
Basic use | iOS12 autofill |
Install
With Cocoapods
pod 'KAPinField'
Usage
import KAPinField
class MyController : UIVIewController {
...
}
Storyboard
You can add an UITextField directly in your Storyboard scene and declare it as KAPinField
. It will automagically become a pin field. You can then customize it from the inspector view to suit your needs.
Delegation
Don't forget to set the delegate likeso :
@IBOutlet var pinField: KAPinField!
override func viewDidLoad() {
super.viewDidLoad()
pinField.pinDelegate = self
...
}
One simple method will be called on your delegate
extension MyController : KAPinFieldDelegate {
func pinField(_ field: KAPinField, didFinishWith code: String) {
print("didFinishWith : \(code)")
}
}
Properties
pinField.token = "△" // Default to "•"
pinField.numberOfCharacters = 5 // Default to 4
pinField.validCharacters = "0123456789+#?" // Default to only numbers, "0123456789"
pinField.pinText = "123" // You can set part or all of the pin text
Styling
You can use the native defaultTextAttributes
to style KAPinField
.
It's highly recommended to use one of iOS monospaced fonts to avoid weird text offset while editting the field.
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .center
let attributes : [NSAttributedString.Key : Any] = [
.paragraphStyle : paragraph,
.font : UIFont(name: "Menlo-Regular", size: 40)!,
.kern : 14,
.foregroundColor : UIColor.white]
pinField.defaultTextAttributes = attributes
Animation
KAPinField
also provide some eye-candy for failure and success.
Success
field.animateSuccess(with: "?") {
print("Success")
}
Failure
field.animateFailure() {
print("Failure")
}