UI-элемент Поле для ввода кода подтверждения из смс или email

Overview

SWCodeField

SWCodeField - простое поле для ввода кода подтверждения из смс или email с возможность изменения количества элементов. UI-элемент основан на UIStackView, объединяет в себе несколько текстовых полей и реализует логичное переключение между ними при вводе и удалении символов.

Внешний вид элемента

Основные возможности

  • Создание и настройка элемента с помощью кода.
  • Создание и настройка элемента с помощью Storyboard (с отображением прямо в storyboard).
  • Возможность настройки количества секций и элементов.
  • Поддержка автоматической вставки кода из поступившего смс-сообщения.

Требования

  • iOS 14+
  • UIKit (поддержки SwiftUI нет)

Установка

Swift Package Manager

Вариант 1.

  • В Xcode перейдите к File | Add Packages ... и введите адрес https://github.com/DobbyWanKenoby/SWCodeField в поисковом поле.
  • Укажите необходимую версию и нажмите Add Package.

Вариант 2.

Добавьте в качестве зависимости в файл Package.swift следующий код:

dependencies: [
    .package(url: "https://github.com/DobbyWanKenoby/SWCodeField", .upToNextMajor(from: "1.0"))
]

Использование

Использование с помощью Storyboard

  • Добавьте на сцену элемент UIStackView.
  • В качестве класса элемента укажите SWCodeField.
  • В Attributes Inspector укажите количество блоков и элементов в блоках (текстовых полей).
  • Свяжите графический элемент со свойством во вьюконтроллере.
@IBOutlet var codeField: SWCodeField!
  • В программном коде задайте обработчик, который вызывается после заполнения всех текстовых полей (свойство doAfterCodeDidEnter).
codeField.doAfterCodeDidEnter = { code in
    print("Code is \(code)")
}

Использование с помощью программного кода

  • Создайте новый экземпляр типа SWCodeField, указав количество блоков и элементов.
let codeField = SWCodeField(blocks: 2, elementsInBlock: 3)
  • Укажите размер и расположение элемента любым удобным способом:

Через frame

self.view.addSubview(codeField)
codeField.frame.size = CGSize(width: 200, height: 50)
codeField.center = view.center

С помощью SnapKit

codeField.snp.makeConstraints { make in
    make.centerY.centerX.equalToSuperview()
    make.leadingMargin.trailingMargin.equalTo(40)
    make.height.equalTo(50)
}
  • Задайте обработчик, который вызывается после заполнения всех текстовых полей (свойство doAfterCodeDidEnter).
codeField.doAfterCodeDidEnter = { code in
    print("Code is \(code)")
}

TODO

  • Тесты.
  • Обработка вставки скопированного текста.
  • Настройка внешнего вида текстовых полей.
  • Настройка внешнего вида линий.
  • Настрйока шрифта.
  • Различное количество элементво в блоках.
  • Настройка разделителя между блоками (например символ - для кода типа 12-33-56).
You might also like...
Log messages to text files and share them by email or other way.
Log messages to text files and share them by email or other way.

LogToFiles How to log messages to text files and share them by email or share center. 1 - Add the Log.swift file to your App 2 - Just log the messages

SwiftEmailValidator - A Swift implementation of an international email address syntax validator based on RFC5321 & RFC5322

SwiftEmailValidator A Swift implementation of an international email address syn

The fastest iOS app to add a note to your email inbox
The fastest iOS app to add a note to your email inbox

Major Key How often are you on the run, or hanging out with friends, only to suddenly think of this really important thing you need to do when you're

Send email to any SMTP server like a boss, in Swift and cross-platform
Send email to any SMTP server like a boss, in Swift and cross-platform

Hedwig is a Swift package which supplies a set of high level APIs to allow you sending email to an SMTP server easily. If you are planning to send ema

ProtonMail for macOS - Experimental email client for the ProtonMail service written in Swift
ProtonMail for macOS - Experimental email client for the ProtonMail service written in Swift

ProtonMail for macOS Experimental email client for the ProtonMail service written in Swift. About A pet project, largely incomplete and missing major

A SwiftUI component to make handling of email links better.

EmailLink A SwiftUI component to make handling of email links better. Not only will EmailLink use the correct default client, it will also prompt the

Owner
Vasiliy Usov
iOS Developer, Books author
Vasiliy Usov
Модуль с полезными утилитами для iOS проектов и SwiftUI

GXUtilz Модуль с утилитами для iOS проектов. ?? Требования ✅ Xcode 11.0 ✅ Swift 5+ ✅ iOS 13 (некоторые вещи с iOS 14)+ ?? Установка GXUtilz доступен ч

GARPIX iOS team 17 Aug 30, 2022
SDK для интеграции плеера IVI в сторонние ios-приложения

IVIExternPlayerSDK SDK позволяет интегрировать плеер IVI в сторонние приложения. Требования iOS 12.0 и выше В Info.plist приложения должен быть выстав

ivi 6 Jun 9, 2022
iOS приложение для удобного выбора мероприятий на фестивале комедии Панчлайн.

Панчлайн iOS приложение для удобного выбора мероприятий на фестивале комедии Панчлайн. Скриншоты Основной функционал Афиша Список мероприятий в выбран

null 0 Nov 18, 2021
LoginKit is a quick and easy way to add Facebook and email Login/Signup UI to your app.

LoginKit About LoginKit is a quick and easy way to add Facebook and email Login/Signup UI to your app. If you need to quickly prototype an app, create

Icalia Labs 653 Dec 17, 2022
Email-based instant messaging for iOS.

deltachat-ios Email-based instant messaging for iOS. Testing Betas are distributed via Testflight. Just scan this QR code with the camera app of your

Delta Chat 258 Dec 31, 2022
Tutanota is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.

Tutanota makes encryption easy Tutanota is the secure email service with built-in end-to-end encryption that enables you to communicate securely with

Tutao GmbH 5k Dec 26, 2022
Cordova Email Plugin

Forked to fix Android 11 problems – No future support! SAMPLE APP ?? Cordova Email Plugin The plugin provides access to the standard interface that ma

null 0 Oct 22, 2021
Postal is a swift framework providing simple access to common email providers.

Postal is a swift framework providing simple access to common email providers. Example Connect let postal = Postal(configuration: .icloud(login: "myem

Snips 644 Dec 23, 2022
Unified API Library for: Cloud Storage, Social Log-In, Social Interaction, Payment, Email, SMS, POIs, Video & Messaging.

Unified API Library for: Cloud Storage, Social Log-In, Social Interaction, Payment, Email, SMS, POIs, Video & Messaging. Included services are Dropbox, Google Drive, OneDrive, OneDrive for Business, Box, Egnyte, PayPal, Stripe, Google Places, Foursquare, Yelp, YouTube, Vimeo, Twitch, Facebook Messenger, Telegram, Line, Viber, Facebook, GitHub, Google+, LinkedIn, Slack, Twitter, Windows Live, Yahoo, Mailjet, Sendgrid, Twilio, Nexmo, Twizo.

CloudRail 195 Nov 29, 2021
Email Validation Example With Swift

EmailValidation Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements Installation Em

null 1 Dec 4, 2021