AKMaskField 2.0.3

AKMaskField 2.0.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最新发布2017年2月
SwiftSwift 版本3.0
SPM支持 SPM

Artem Krachulov 维护。



  • 作者
  • Artem Krachulov

AKMaskField

AKMaskField 是 UITextField 的子类,允许以固定数量和特定格式(信用卡、电话号码、日期等)输入数据。您只需设置掩码和可见于用户的掩码模板。

Preview

功能

  • [x] 使用简单
  • [x] 可以从代码或设置面板设置输入字段
  • [x] 智能模板
  • [x] 支持动态更改掩码
  • [x] 输入字段的快速处理
  • [x] 智能复制/粘贴操作

要求

  • iOS 8.0+
  • Xcode 7.3+

安装

手动

如果您不希望使用上述任何一个依赖项管理器,您可以手动将 AKMaskField 集成到您的项目中。

  1. 下载并将 AKMaskField 文件夹拖到您的项目中。
  2. 完成!

使用示例

Storyboard

在检查器/附件面板选项卡中创建一个文本字段 UITextField 并将类设置为 AKMaskField。在检查器/附件属性选项卡中指定必要的属性。

示例

  • MaskExpression:{dddd}-{DDDD}-{WaWa}-{aaaa}
  • MaskTemplate:ABCD-EFGH-IJKL-MNOP

编程方式

在您的视图控制器中设置掩码字段。

var field: AKMaskField!

override func viewDidLoad() {
    super.viewDidLoad()

    field = AKMaskField()
    field.maskExpression = "{dddd}-{DDDD}-{WaWa}-{aaaa}"
    field.maskTemplate = "ABCD-EFGH-IJKL-MNOP"
}

配置掩码字段

var maskExpression: String?

包含模式符号的字符串值,这些符号确定输入数据的特定格式。用适当的括号字符包装每个掩码块。

预定格式:

掩码符号(模式) 输入格式
d 数字,0到9的十进制数
D 任何符号,除了十进制数
W 非字母符号
a 字母符号,a-Z
. 对应于任何符号(默认)

此属性的默认值是 nil

var maskTemplate: String

表示掩码字段的文本,将掩码符号替换为模板字符。

字符计数 输入格式
1 模板字符将被复制到每个掩码块,块的长度相等。
相等 模板长度等于只有括号外的掩码。模板字符将在相同的范围内替换掩码块。

此属性的默认值是 *

func setMask(mask: String, withMaskTemplate maskTemplate: String)

使用此方法设置掩码和模板参数。

参数

  • maskExpression :掩码(见上文)。
  • maskTemplate : 掩码模板(见上文)。

您还可以设置默认的 placeholder 属性。占位符仅在掩码字段为空时显示。

var maskBlockBrackets: AKMaskFieldBrackets

掩码块的左右括号字符。此属性的默认值是 {}

设置掩码字段行为

var jumpToPrevBlock: Bool { get set }

当光标位于括号之间或当前块的第一个字符之前时,跳转到前一个块。此属性的默认值是 false

访问文本属性

var text: String? { get set }

掩码字段显示的文本。

掩码字段操作

func refreshMask()

手动刷新掩码字段。

访问代理

weak var maskDelegate: AKMaskFieldDelegate? { get set }

接收者的代理。

获取掩码字段状态

var maskStatus: AKMaskFieldStatus { get }

返回掩码字段的当前状态。属性的值是一个常量。请参阅 AKMaskFieldStatus 了解可能值的描述。

获取掩码字段对象

var maskBlocks: [AKMaskFieldBlock] { get }

返回包含所有掩码字段块的数组。

AKMaskFieldDelegate

管理编辑

optional func maskFieldShouldBeginEditing(maskField: AKMaskField) -> Bool

询问代理,是否应在指定的掩码字段中开始编辑。

参数

  • maskField : 即将开始编辑的掩码字段。
optional func maskFieldDidBeginEditing(maskField: AKMaskField)

询问代理,是否应在指定的掩码字段中开始编辑。

参数

  • maskField : 即将开始编辑的掩码字段。
optional func maskFieldShouldEndEditing(maskField: AKMaskField) -> Bool

询问代理,是否应在指定的掩码字段中停止编辑。

参数

  • maskField : 即将结束编辑的掩码字段。
optional func maskFieldDidEndEditing(maskField: AKMaskField)

通知代理,指定掩码字段的编辑已停止。

参数

  • maskField : 编辑结束的掩码字段。
optional func maskField(maskField: AKMaskField, didChangedWithEvent event: AKMaskFieldEvent)

通知代理,指定的掩码字段使用事件更改了文本。

参数

  • maskField : 事件更改的掩码字段。
  • event : 在操作后接收的事件常量值。

编辑掩码字段的块

optional func maskField(maskField: AKMaskField, shouldChangeBlock block: AKMaskFieldBlock, inout inRange range: NSRange, inout replacementString string: String) -> Bool

询问代理,指定的掩码块是否应更改。

参数

  • maskField : 包含文本的掩码字段。
  • block : 目标块。请参阅 **AKMaskFieldBlock** 获取更多信息。
  • range : 要替换的字符范围(输出参数)。
  • string : 替换指定范围的替换字符串(输出参数)。

结构

AKMaskFieldBlock

包含掩码块主要属性的元结构。

一般

var index: Int

掩码中的块索引

var status: AKMaskFieldStatus { get }

返回当前块的状态。

var chars: [AKMaskFieldBlockCharacter]

包含块内所有字符的数组。请参阅 AKMaskFieldBlockCharacter 结构的信息。

模式

var pattern: String { get }

表示当前块的掩码模式。

var patternRange: NSRange { get }

掩码中掩码模式的的位置。

掩码模板

var template: String { get }

表示当前块的掩码模板字符串。

var templateRange: NSRange { get }

掩码模板字符串在掩码模板中的位置。

AKMaskFieldBlockCharacter

包含块字符主要属性的机构。

一般

var index: Int

块中的字符索引。

var blockIndex: Int

掩码中的块索引。

var status: AKMaskFieldStatus

当前字符状态。

模式

var pattern: AKMaskFieldPatternCharacter

掩码模式字符。见AKMaskFieldPatternCharacter常数信息。

var patternRange: NSRange

模式字符在掩码中的位置。

掩码模板

var template: Character

掩码模板字符。

var templateRange: NSRange

掩码模板字符在掩码模板中的位置。

常数

AKMaskFieldStatus

enum AKMaskFieldStatus {
    case Clear
    case Incomplete
    case Complete
}

掩码字段、块和块字符状态属性常数。

AKMaskFieldEvent

enum AKMaskFieldEvet {
    case None
    case Insert
    case Delete
    case Replace
}

掩码字段操作后接收的事件常数值。

AKMaskFieldPatternCharacter

enum AKMaskFieldPatternCharacter: String {
  case NumberDecimal = "d"
  case NonDecimal = "D"
  case NonWord = "W"
  case Alphabet = "a"
  case Any = "."
}

单块字符模式常数。

常数

  • NumberDecimal : 数字,0到9的十进制数
  • NonDecimal : 任何符号,除了十进制数字
  • NonWord : 非字母符号
  • Alphabet : 字母符号,a-Z
  • Any : 对应任何符号(默认)
func pattern() -> String

返回正则表达式模式。

贡献

请勿忘记★这个存储库以增加其可见性并鼓励其他人做出贡献。

有你修复的错误或新功能?创建一个pull request并去做吧!

元信息

Artem Krachulov – www.artemkrachulov.com - [email protected]

MIT许可证下发布

https://github.com/artemkrachulov