我正在尝试根据输入的字符数为文本字段使用动态掩码。
我尝试使用VMaskTextField,AKMaskField,现在使用InputMask(https://github.com/RedMadRobot/input-mask-ios),但我只能使其中一个蒙版起作用。我想将蒙版屏蔽为###。###。###-##或##。###。### / ####-##,但是我无法在用户类型。我关注了两个Wiki帖子https://github.com/RedMadRobot/input-mask-ios/wiki/Quick-Start和https://github.com/RedMadRobot/input-mask-ios/wiki/2.1-Affine-Masks。
这是我的实际代码:
@IBOutlet var btnEntrar: UIButton!
@IBOutlet var txtCpfCnpj: UITextField!
@IBOutlet var listener: MaskedTextFieldDelegate!
override func viewDidLoad() {
super.viewDidLoad()
listener.affinityCalculationStrategy = .prefix
listener.primaryMaskFormat = "[000].[000].[000]-[00]"
listener.affineFormats = [
"[00].[000].[000]/[0000]-[00]"
]
}
这是main.storyboard:
我按照Wiki帖子上的建议创建了侦听器,它现在可以工作。该字段接受的字符数不能超过11个字符,这对应于第一个掩码([000]。[000]。[000]-[00])
有人知道如何以其他任何方式或使用某些框架来使用此动态遮罩吗?
谢谢
答案 0 :(得分:0)
InputMask
作者在这里。
MaskedTextFieldDelegate
根据其AffinityCalculationStrategy
在可用的掩码之间切换。根据您的代码,您使用的是.prefix
策略,除非最终用户自己键入全部加点符号,否则策略不会奏效。
不幸的是,您目前可以使用的第二种策略(.wholeString
)也不会帮您解决问题。
在我看来,根据输入值的长度,该库当前缺少一个AffinityCalculationStrategy
。我将在这个周末添加它,所以请继续关注。
UPD。我已经为此功能制作了feature request。