Как динамически маскировать текстовое поле с помощью swift - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь использовать динамическую маску для текстового поля в соответствии с количеством введенных символов.

Я пытался использовать VMaskTextField, AKMaskField, и теперь я использую InputMask (https://github.com/RedMadRobot/input-mask-ios), и мне удалось заставить работать только одну из масок. Я хочу замаскировать под ###. ###. ### - ## или ##. ###. ### / #### - ## но я не смог изменить маску при вводе пользователем. Я проследовал за двумя публикациями в вики 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:

Main.storyboard

Я создал слушателя, как предложено в постах вики, и теперь он работает. Поле не может содержать более 11 символов, что соответствует первой маске ([000]. [000]. [000] - [00])

Кто-нибудь знает, как эту динамическую маску каким-либо другим способом или использовать какой-то фреймворк?

Спасибо

1 Ответ

1 голос
/ 25 мая 2019

InputMask автор здесь.

MaskedTextFieldDelegate переключает доступные маски на основе AffinityCalculationStrategy. Согласно вашему коду, вы используете стратегию .prefix, которая не добьется цели, если конечный пользователь сам не введет этот точечный символ.

К сожалению, вторая стратегия, доступная вам в настоящее время (.wholeString), вам тоже не поможет.

Мне кажется очевидным, что в настоящее время в библиотеке отсутствует еще один AffinityCalculationStrategy в зависимости от длины входного значения. Я собираюсь добавить это в эти выходные, поэтому, пожалуйста, следите за обновлениями.

UPD. Я сделал запрос функции относительно этой функции.

...