如何快速快速屏蔽文本字段

时间:2019-05-21 14:38:22

标签: ios swift input-mask

我正在尝试根据输入的字符数为文本字段使用动态掩码。

我尝试使用VMaskTextField,AKMaskField,现在使用InputMask(https://github.com/RedMadRobot/input-mask-ios),但我只能使其中一个蒙版起作用。我想将蒙版屏蔽为###。###。###-##或##。###。### / ####-##,但是我无法在用户类型。我关注了两个Wiki帖子https://github.com/RedMadRobot/input-mask-ios/wiki/Quick-Starthttps://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:

Main.storyboard

我按照Wiki帖子上的建议创建了侦听器,它现在可以工作。该字段接受的字符数不能超过11个字符,这对应于第一个掩码([000]。[000]。[000]-[00])

有人知道如何以其他任何方式或使用某些框架来使用此动态遮罩吗?

谢谢

1 个答案:

答案 0 :(得分:0)

InputMask作者在这里。

MaskedTextFieldDelegate根据其AffinityCalculationStrategy在可用的掩码之间切换。根据您的代码,您使用的是.prefix策略,除非最终用户自己键入全部加点符号,否则策略不会奏效。

不幸的是,您目前可以使用的第二种策略(.wholeString)也不会帮您解决问题。

在我看来,根据输入值的长度,该库当前缺少一个AffinityCalculationStrategy。我将在这个周末添加它,所以请继续关注。

UPD。我已经为此功能制作了feature request