Делаю экран для ввода кода из смс и решил добавить автоматическую вставку кода из смс, увидел, что многие делают 4 UITextField’a вместо одного. Так вот вопрос, как мне сделать так, чтобы код вставлялся во все ячейки TextField
Заполнение UITextField кодом из смс
В принципе так и подумал. Не подскажите можно ли код из смс сохранить в переменную? Если да, то как. Буду благодарен
Я уже не помню всех деталей этой реализации, нужно читать доку.
Еще учтите, что эта возможность работает вроде начиная с 12 iOS, следовательно старые версии будут без этой фичи.
Как один из вариантов выхода из вашей ситуации, сделать невидимый textField, в который вы вставите полный код, через делегат отловите заполнение его и после этого вытащите из этого textField ваш код и занесете его в переменную. Таким образом можно будет делать дальше что угодно.
Я почти доделал, осталось только реализовать вашу задумку, если пользователь захочет ввести код вручную(допустим не знает, что можно вставлять), то автоматически не переключится с невидимого tf на тот который нужен(на 1 ячейку). Можно как-то исправить?
Мне кажется все будет работать и так. Вам лишь нужно будет делать проверку в делегате невидимого tf, когда пользователь сам вводит код. Получается при ручном вводе кода, берете текущий код, делите его на 4 части и начинаете заполнять ваши видимые ячейки. Как только следующая часть кода для вставки окажется nil, прекращаете делать вставку.
Аналогично будет работать и при удалении кода, только удалять в вашем случае вы будете по одному символу из невидимого tf. Вся остальная логика в делегате останется без изменений.
if #available(iOS 12.0, *) {
textField.textContentType = .oneTimeCode
}
Это для чтения кода из СМС