Swiftpack.co - DobbyWanKenoby/SWCodeField as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
DobbyWanKenoby/SWCodeField
UI-элемент Поле для ввода кода подтверждения из смс или email
.package(url: "https://github.com/DobbyWanKenoby/SWCodeField.git", from: "1.1")

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"))
]

Вручную

Добавьте в собственный проект код из файла Sources/SWCodeField/SWCodeField.swift

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

Использование с помощью 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)")
}

API

// Замыкание, которое выполняется после того, когда введены значения для всех полей
// В качестве входного параметра получает введнный код в виде строки
var doAfterCodeDidEnter: ((String) -> Void)? { get set }

// Код в текстовых полях
// Может быть как прочитано, так и установлено
var code: String { get set }

TODO

  • Тесты.
  • Обработка вставки скопированного текста.
  • Настройка внешнего вида текстовых полей.
  • Настройка внешнего вида линий.
  • Настрйока шрифта.
  • Различное количество элементво в блоках.
  • Настройка разделителя между блоками (например символ - для кода типа 12-33-56).

GitHub

link
Stars: 8
Last commit: 1 week ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics