chausovsurfstudio / textfieldscatalog Goto Github PK
View Code? Open in Web Editor NEWThis is catalog of various input field with great opportunities for validation and formatting.
License: MIT License
This is catalog of various input field with great opportunities for validation and formatting.
License: MIT License
Был вот такой вот PR - #40.
В нем стало возможно добавить линию, подчеркивающую поле ввода, не к другим элементам на superview, как обычно, а на какое-либо свое.
Было замечено, что отступы, которые можно задать там же в параметрах конфигурации, не всегда при этом отрабатывают корректно, если ширина передаваемого superview отличается от ширины самого поля (к примеру, мы хотим отступ справа/слева в 5pt, но линия может вылезать справа за пределы передаваемого superview).
Необходимо:
Например, когда вводишь номер телефона, пробелы или скобочки проставляются автоматически, но при стирании цифр пробелы приходится стирать тоже
Если задать maskFormatter
одновременно с maxLength
то ограничения из маски будут приоритетнее.
Пример:
/// маска ограничивает на 21 символ
field.maskFormatter = MaskTextFieldFormatter(mask: "[_][~~~~~~~~~~~~~~~~~~~~]", notations: [ Notation(character: "~", characterSet: characterSet, isOptional: true)])
field.maxLength = 20
При вводе в поле позволяется ввести 21 символ.
Быть может так и задумано, но это неочевидно.
Если ваше приложение построено по принципу многомодульной архитектуры - то при затягивании туда полей ввода и сборке этого модуля будут выскакивать 6 ворнингов. Надо бы понять причину их появления и пофиксить
После закрытия issue на рефакторинг внутренней архитектуры (#9) необходимо будет обновить документацию к библиотеке.
Попробовал запустить поля под новым XCode - и не все так уж гладко(
Swift 5 уже давно относительно вышел, пора обновиться бы
Есть кейсы, когда необходимо заменить клавиатуру чем-нибудь другим, например барабаном (поля ввода для выбора даты рождения/пола и т.д.), соответственно необходимо дать доступ к полу inputView. Плюс можно набросать вариант готовой вьюхи с барабаном дат, чтобы не создавать свою вьюху, а переиспользовать view из библиотеки.
В данный момент нет возможности вносить свои кастомные нотации при создании объекта MaskedTextFieldDelegate, отвечающего за форматирование текста при вводе. Необходимо пересмотреть архитектуру форматтеров, чтобы предоставить эту возможность.
Это позволит определять свои символы при создании масок, которым будут соответствовать определенные разрешенные для ввода группы символов - что позволит сделать механизм форматтеров более гибким.
Сейчас судя по конфигурации можно выбрать только общий шрифт и разные размеры для него, хотелось бы видеть разные шрифты для обоих состояний.
Сейчас подсказка (hint) под полем отображается когда поле активно (или в состоянии ошибки). Нужно добавить возможность настраивать видимость подсказки и в неактивном поле
ПРи переиспользовании ячейки некорректное поведение текста в textFileld. Принудительная установка нового значения в prepareForReuse() не помогает.
Показать примеры работы полей ввода в различных контейнерах: UIView, UITableView, UIScrollView, UIStackView.
Необходимо добавить возможность затягивать либу через Swift Package Manager и проверить как-это будет работать в модульном приложение.
Появилась необходимость в создании отдельного метода для настройки параметра capitalization у текстового поля.
Так же есть мысль сделать класс InnerTextField public, так как он обладает некоторыми интересными особенностями, которые могут быть полезны даже без использования текстового поля из данной библиотеки.
К примеру, на 6+ iOS 11 текст в поле не меняет свой цвет или меняет, но не вовремя.
В данный момент при вызове reset() у какого-либо поля ввода - содержимое стирается, обновление UI происходит с анимацией.
Либо другой кейс - при установке текста в поле ввода содержимое обновляется с анимацией.
В данных кейсах анимация не всегда уместна, необходимо дать возможность выполнить данные действия без анимации. Для этого необходим ресерч того, как все же выполнить три CABasicAnimations одновременно и синхронно, ибо при первом знакомстве с этим багом - задача показалась не такой уж и просто.
Добрый день,
Использовали версию 0.12.3 в которой был метод UnderlineTextField.setup(heightConstraint:) который устанавливал высоту, заданную в XIB через NSLayoutConstraint.
textField.setup(heightConstraint: containerHeightConstraint)
textField.heightLayoutPolicy = .elastic(minHeight: 60, bottomSpace: 5, ignoreEmptyHint: true)
После обновления до версии 0.14.0 данный метод пропал и в документации нет указания чем его заменить. Каким образом теперь устанавливать высоту текстфилда через констрейнты?
Заранее спасибо за информацию.
Чаще всего дизайнеры рисуют многострочные поля ввода с lineSpacing > 1
, но он настраивается через NSMutableParagraphStyle
и через attributedText
, сейчас использовать атрибуты возможности нет, а очень хочется
Describe the solution you'd like
Предложила бы добавить еще один параметр при установке конфигурации для текста с массивом атрибутов, и в момент когда для textView устанавливается текст вставлять его через attributedText =
Describe alternatives you've considered
В идеале стоит и для TextField добавить, но для начала можно только для TextView
Describe the bug
Если в валидаторе сейчас установлено значение N и в поле ввода введено менее N символов, то отображается ошибка на русском языке "Поле должно содержать минимум N символов", причем склонение "символов" не зависит от числа - "1 символов", "2 символов" и тд
To Reproduce
Путь воспроизведения
Expected behavior
"Символов" будет склоняться
Screenshots
Library version and device type
Такое уже делалось, и не раз, будет не лишним добавить и в каталог.
Суть в том, что текстовое поле - однострочное, UITextView - многострочный. Необходимо написать такую обертку над UITextView, которая бы расширялась при увеличении высоты самого textView.
После перевода библиотеки на swift 5 необходимо будет обновить и Example проект
Есть идея, состоящая в том, чтобы вынести повторяющийся код в текстовых полях в некое переиспользуемое ядро.
Это позволит более легко поддерживать механику работы полей, а также добавлять новые поля, основываясь на данном ядре. Ну и codebeat ругаться может поменьше будет :)
Если в поле необходимо больше состояний - сразу упираемся в стену - например если нам нужен floatingPlaceholder с возможностью окрашивания в дополнительный цвет - нам надо создать новый AbstractPlaceholderService
который на 95% повторяет FloatingPlaceholderService
, но не это самое страшное - надо продублировать и конфигурацию и даже ColorConfiguration
получается много лишней работы и того же кода :(
А если мы хотим поменять цвет текста на дополнительный - то мы можем только заменить конфигурацию UnderlinedTextFieldConfiguration - при установке которой у нас все поле перерисовывается, и соответсвенно подергивается анимация(
Хочется иметь возможность настраивать более гибко существующие поля
Describe the solution you'd like
Открыть сервисы и свойства, чтобы можно было их расширять или хотя бы изменять, а не жестко задавать в начале
Describe alternatives you've considered
Возможно стоит добавить обновление отдельных элементов, расширяемость сервисов и доступ и изменению конфигураций
После выполнения рефакторинга внутренней архитектуры и закрытия всех актуальных и критических issue, а также после обновления документации, необходимо произвести релиз до версии 1.0.0
Описать протокол содержащий стандартные методы для полей ввода: конфигурация, валидация, выставление ошибки, сброс состояния и тд.
class LoginController: UIViewController {
private lazy var emailTextField: UITextField = {
let tf = UITextField()
tf.textColor = .black
tf.autocorrectionType = .no
tf.autocapitalizationType = .none
tf.keyboardType = .emailAddress
tf.attributedPlaceholder = NSAttributedString(string:"Email", attributes:[NSAttributedString.Key.foregroundColor: UIColor.systemGray])
tf.font = UIFont(name: "Font", size: 16)
tf.delegate = self
tf.addTarget(self, action: #selector(handleTextInputChange), for: .editingChanged)
return tf
}()
Что нужно сделать чтобы emailTextField стал BorderedTextField?
Написать подробную документацию как к самим полям вода, доступным методам, имеющимся фичам, так и к Example проекту (к примеру, как добавить свое поле ввода)
Describe the bug
При использовании UnderlinedTextView и его наследников при переходе на новую строку, первый раз и иногда 3 - каретка прыгает и возвращается визуально на первую предыдущую строку, по факту -TextView проскроливается и первая строка оказывается за пределами видимости, скорее всего из-за ошибки расчета высоты, но надо покопать, до версии 0.14. такое поведение можно было поймать если не указать у поля heightPolicy
На ios 12 и выше такой проблемы не выявлено
To Reproduce
Expected behavior
Как и на версиях ios >= 12 поле не скролится, а только увеличивается по высоте
Library version and device type
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.