Користувацький ввід — основа взаємодії користувача з мобільним застосунком. Від коректної реалізації UITextField на iOS, EditText на Android та клавіатури в мобільних застосунках залежить зручність використання продукту. За даними HIG Apple, неправильна обробка користувацького вводу — часта причина негативних відгуків.
Головне
Користувацький ввід в мобільних застосунках — це процес передачі даних від користувача в застосунок через сенсорний екран та віртуальну клавіатуру. На iOS основним інструментом виступає UITextField, на Android — EditText. Користувацький ввід охоплює текстові поля, форми реєстрації, пошукові запити, номери телефонів та коди підтвердження. Від якості реалізації користувацького вводу залежить швидкість заповнення форм та конверсія мобільного застосунку.
Неправильна обробка користувацького вводу в мобільній розробці веде до помилок валідації, вразливостей та втрати користувачів. За даними Statista (2025), 67% користувачів видаляють мобільний застосунок після двох невдалих спроб введення. Коректна реалізація користувацького вводу включає налаштування типів клавіатури, валідацію, форматування та автозаповнення. В мобільній розробці ці аспекти стандартизовані обома платформами.
Клавіатура в мобільних застосунках налаштовується через keyboardType на iOS та inputType на Android. Користувацькі налаштування включають автокорекцію, автозаповнення та безпечне введення пароля. Responder Chain на iOS та фокус на Android керують показом та приховуванням клавіатури. Для користувацького вводу в мобільних застосунках критично важлива Keyboard Avoidance — контент не повинен перекриватися клавіатурою.
На iOS основними елементами користувацького вводу виступають UITextField для однострокового тексту та UITextView для багатострокового. Обидва підтримують делегати UITextFieldDelegate та UITextViewDelegate для керування початком, зміною та завершенням редагування. Налаштування клавіатури в мобільних застосунках iOS виконується через властивості keyboardType, returnKeyType та isSecureTextEntry.
Властивість textContentType підказує системі, які дані очікуються в полі — username, password, oneTimeCode, emailAddress. Це підключає автозаповнення зі зв'язки ключів та прискорює користувацький ввід. Для полів з Secure Text Entry вкажіть .password, щоб менеджер паролів коректно зберігав облікові дані. Використання textContentType покращує користувацький ввід в мобільних застосунках.
let textField = UITextField()
textField.placeholder = "Email"
textField.keyboardType = .emailAddress
textField.textContentType = .emailAddress
textField.autocorrectionType = .no
textField.becomeFirstResponder()
First Responder — активне поле, що отримує події від клавіатури. Виклик becomeFirstResponder() показує клавіатуру, resignFirstResponder() приховує. Ланцюжок Responder Chain послідовно перевіряє, чи може елемент обробити подію. При кількох полях важливо керувати First Responder, щоб клавіатура не залишалася відкритою. Користувацьким вводом в мобільних застосунках керує також textFieldShouldReturn — натискання Return перемикає на наступне поле.
На Android аналогом UITextField виступає EditText, що підтримує одностроковий та багатостроковий режим через атрибут inputType. Для Material-полів використовуйте TextInputLayout з бібліотеки com.google.android.material — він додає плаваючий hint, лічильник символів та підтримку помилок. Користувацький ввід в мобільних застосунках Android налаштовується через inputType та imeOptions.
Атрибут inputType визначає тип клавіатури та режим введення: text для звичайного тексту, textPassword для пароля, number для цифр, phone для телефонної клавіатури. imeOptions керує дією на кнопці Enter — Done, Next, Search, Send. Комбінуйте значення через побітове АБО: text|textCapSentences. Клавіатури в мобільних застосунках Android підтримують автозаповнення через autofillHints.
val editText = EditText(this)
editText.inputType = InputType.TYPE_CLASS_PHONE
editText.imeOptions = EditorInfo.IME_ACTION_DONE
editText.autofillHints = "phone"
val layout = TextInputLayout(this)
layout.hint = "Номер телефона"
layout.addView(editText)
TextInputLayout.setError() показує повідомлення про помилку під полем введення. Комбінуйте миттєву валідацію через TextWatcher та фінальну при відправленні форми. Користувацького вводу в мобільних застосунках стосується також фокус — requestFocus() робить поле активним та показує клавіатуру. Використовуйте clearFocus() для приховування клавіатури при завершенні користувацького вводу на Android.
Клавіатура в мобільних застосунках не повинна перекривати поля введення — це базова вимога UX. Keyboard Avoidance — техніка зсуву контенту при появі клавіатури. На iOS використовуйте UIResponder.keyboardWillShowNotification для отримання розміру клавіатури та зсуву scrollView. На Android вкажіть adjustResize в маніфесті або використовуйте CoordinatorLayout. Клавіатури в мобільних застосунках налаштовуються по-різному на двох платформах, але мета одна — контент завжди видимий.
На iOS підпишіться на сповіщення keyboardWillShowNotification та keyboardWillHideNotification через NotificationCenter. В обробнику отримайте розмір клавіатури з userInfo та встановіть contentInset у UIScrollView. Альтернативно використовуйте IQKeyboardManager, який автоматично обробляє зсув. Користувацький ввід в мобільній розробці iOS вимагає обов'язкової обробки клавіатури для комфортного UX.
На Android основний спосіб — android:windowSoftInputMode="adjustResize" в маніфесті. Цей прапорець стискає layout при появі клавіатури. Для CoordinatorLayout використовуйте Behavior, який піднімає кнопки та поля. Використовуйте ViewCompat.setOnApplyWindowInsetsListener для точного контролю відступів. Клавіатурою в мобільному застосунку Android керує також OnGlobalLayoutListener.
Валідація користувацького вводу — обов'язковий етап обробки даних в мобільних застосунках. Без неї застосунок отримує некоректні дані, що веде до помилок та вразливостей. Користувацький ввід в мобільних застосунках вимагає двох підходів: миттєва валідація (при кожному символі) для номерів та кодів, фінальна — для email та паролів. Input Mask автоматично форматує телефон, дату та номер картки.
Input Mask задає шаблон введення, за яким текст автоматично форматується. Приклад маски для російського номера: «+7 (___) ___-__-__». На iOS Input Mask реалізується через делегат textField(_:shouldChangeCharactersIn:replacementString:). На Android використовуйте InputFilter з відстеженням позиції символів. Для міжнародних номерів підключіть бібліотеку libphonenumber від Google.
func textField(
_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String
) -> Bool {
guard let text = textField.text else { return true }
let masked = applyPhoneMask(text, mask: "+7 (***) ***-**-**")
textField.text = masked
return false
}
| Параметр | iOS | Android |
|---|---|---|
| Однострокове поле | UITextField | EditText |
| Багатострокове поле | UITextView | EditText + textMultiLine |
| Плаваючий hint | attributedPlaceholder | TextInputLayout |
| Тип клавіатури | keyboardType | inputType |
| Безпечне введення | isSecureTextEntry | textPassword |
| Автозаповнення | textContentType | autofillHints |
| Делегат або Listener | UITextFieldDelegate | TextWatcher |
| Помилка валідації | Кастомний UILabel | TextInputLayout.setError() |
Часті запитання
Викличте becomeFirstResponder() у UITextField або UITextView. Для приховування використовуйте resignFirstResponder(). Переконайтеся, що поле видиме та не заблоковане.
inputType визначає тип клавіатури (текст, цифри, email). imeOptions керує дією на кнопці Enter (Done, Next, Search). Вони працюють незалежно і часто комбінуються.
Використовуйте делегат textField(_:shouldChangeCharactersIn:replacementString:) та форматуйте текст вручну. Або підключіть бібліотеку InputMask з шаблонами виду «+7 ([000]) [000]-[00]-[00]».
Вкажіть в маніфесті android:windowSoftInputMode="adjustResize". Якщо використовується CoordinatorLayout, перевірте налаштування Behavior для підйому кнопок та полів.
На iOS використовуйте textContentType = .oneTimeCode. На Android — autofillHints = "smsCode". Система автоматично підставить код з SMS при отриманні.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.