SVPinView
SVPinView是一个轻量级可定制的库,用于接受数字验证码或一次性密码。
开始使用
包含示例项目以演示SVPinView的功能。
安装
CocoaPods
将以下行添加到Podfile
pod 'SVPinView', '~> 1.0'
然后在Podfile所在的目录中运行以下命令
pod install
Carthage
github xornorik/SVPinView
- 在你的项目文件夹根目录中创建一个Cartfile文件
- 将github
xornorik/SVPinView
添加到你的Cartfile - 运行
carthage update
- 将SVPinView.framework从/Carthage/Build/iOS/拖放到Xcode(项目>目标>通用>链接框架和库)中的链接框架和库
- 添加新的运行脚本(项目>目标>构建阶段>+>新运行脚本阶段)/usr/local/bin/carthage copy-frameworks
- 添加输入文件 $(SRCROOT)/Carthage/Build/iOS/SVPinView.framework
手册
克隆仓库并将 SVPinView/Source
文件夹中的文件拖拽到您的 Xcode 项目中。
用法
Storyboard
代码
pinView.pinLength = 5
pinView.secureCharacter = "\u{25CF}"
pinView.interSpace = 5
pinView.textColor = UIColor.black
pinView.shouldSecureText = true
pinView.style = .box
pinView.borderLineColor = UIColor.black
pinView.activeBorderLineColor = UIColor.lightGray
pinView.borderLineThickness = 1
pinView.activeBorderLineThickness = 3
pinView.font = UIFont.systemFont(ofSize: 15)
pinView.keyboardType = .phonePad
pinView.keyboardAppearance = .default
pinView.pinIinputAccessoryView = UIView()
pinView.placeholder = "******"
pinView.becomeFirstResponderAtIndex = 0
becomeFirstResponderAtIndex
属性将指定索引处的 pinField 设置为第一个响应者。 isContentTypeOneTimeCode
属性将第一个 pinField 的 contentType 设置为 .oneTimeCode
,以利用 iOS 12 中的功能,其中 passcode 直接从消息中获取。
样式
enum SVPinViewStyle : Int {
case none = 0
case underline
case box
}
有两种内置样式:underline
和 box
。然而,可以使用 fieldBackgroundColor 和 fieldCornerRadius 属性,以及 activeFieldBackgroundColor 和 activeCornerRadius 属性来创建自定义样式。
pinView.style = .none
pinView.fieldBackgroundColor = UIColor.white
pinView.fieldCornerRadius = 0
删除按钮动作
SVPinView 在删除按钮被点击时提供三种不同的行为。这可以通过在 pinView 上使用 deleteButtonAction 属性并设置以下值来设置
-
.deleteCurrentAndMoveToPrevious:这是与pinView一起设置的默认选项。它会删除当前字段的全部内容,并将光标移动到前一个字段。一旦光标处于前一个字段,如果输入了内容,它会覆盖现有值,并移动到下一个字段。
-
.deleteCurrent:它会删除当前字段的内容,而不移动光标。如果在按下删除按钮时字段中没有值,它会将光标移动到前一个字段。
-
.moveToPreviousAndDelete:当它被聚焦时,会删除当前字段的内容。当按下删除按钮时,它会将光标移动到前一个字段,并删除其内容。
方法
- getPin:返回作为字符串输入的PIN。如果在PIN输入不完整时调用此方法,则返回一个空的字符串以进行验证。
- pastePin:接受一个字符串作为参数并将其输入到pinView中。当需要显示默认值或从剪贴板粘贴时很有用。长按PIN字段也将允许从剪贴板粘贴。
- clearPin:清除输入的PIN并刷新视图。返回在视图刷新时的完成处理程序。
- refreshView:清除输入的PIN并刷新视图。返回在视图刷新时的完成处理程序。
回调
- didFinishCallback:在所有PIN输入完成后执行。当需要通过网络调用或在输入PIN后导航到不同的ViewController时很有用。
- didChangeCallback:在任何一个PIN字段更改时执行。这为父VC提供了额外的控制,例如,如果要根据PIN验证启用/禁用提交按钮。
pinView.didFinishCallback = { [weak self] pin in
print("The pin entered is \(pin)")
}
pinView.didChangeCallback = { [weak self] pin in
submitButton.isEnabled = isValid(pin)
}
要求
- iOS 9.0 +
- Xcode 8.0 +
许可证
SVPinView 提供 MIT 许可。详见 LICENSE 文件。