Тип автоматичної капіталізації UITextField - додаток iPhone


112

Чи є спосіб встановити тип autocapitalizationType UITextFieldтаким чином, щоб перша літера кожного слова була написана з великої літери за замовчуванням?

Це приклад того, що я хочу


45
З іншого боку - приємно мати можливість google "UITextField capitalization" і отримати це спливаюче вікно за 2 секунди, а не витрачати всю хвилину на відкриття документації та сканування на це. Документація щодо StackOverflow IS.
Shaun Budhram

1
Натрапляючи на подібні запитання, я щасливий, що 1) люди здатні задавати цілісні прямі запитання (незалежно від сфери застосування) і 2) люди коментують найкращі проблеми ***
Буде Вон Улріх

Відповіді:


237

Використовуйте textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Для отримання додаткової інформації, будь ласка, прочитайте: Посилання на протокол UITextInputTraits


2
Це не допоможе, якщо ви введете текст у поле. У цьому випадку
делегуйте

Чи хотіли б ви розробити ще якийсь HotJard? Мені б хотілося знати, як вставити текст і автокапіталізувати.
vnchopra

5
Це не працює, я спробував це на Xcode 6 iOS 8 Swift. Я це робив у програмі для створення коду та інтерфейсу, не працює.
Van Du Tran

10
Переконайтеся, що для клавіатури в програмі інтерфейсу встановлено значення за замовчуванням. Інакше це не спрацює
OscarVGG

3
Також переконайтеся, що у налаштуваннях ОС (налаштування-> загальна-> клавіатура) увімкнено автоматичну капіталізацію, значення параметрів iOS заміняють усе, що ви встановили у текстовому полі
Lope

38

Що ми хочемо зробити - це встановити текстове поле autocapitalizationType.

Завдання-C:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

Швидкий:

self.textfield.autocapitalizationType = .words

Тут є кілька варіантів:

введіть тут опис зображення

  • allCharacters - це те саме, що подвійне натискання клавіші зсуву, в основному капсул.
  • none досить зрозуміла, клавіатура ніколи не намагатиметься використовувати великі літери.
  • sentences спробує використовувати великі літери після пунктуації позначки кінця.
  • words спробує використати великі літери на кожному новому слові (після пробілу), яке, здається, саме те, що ви шукаєте.

Цю властивість можна також встановити у Інспектора атрибутів конструктора інтерфейсів, коли у вас вибрано відповідне текстове поле:

введіть тут опис зображення

"Капіталізація" - це перший варіант у цій групі, щойно пройшов вибір мінімального розміру шрифту для текстового поля.


8

Установка capitalizationвластивості «Слова» буде припустити , що користувач вводить заголовні слова. Користувач може це перекрити, не зміщуючи клавіатуру. Найкраще робити великі літери у коді:

NSString *text = [myTextField.text capitalizedString];

Це дозволить використовувати велику літеру у всьому рядку, UITextAutocapitalizationTypeWords з великої літери використовує першу букву в кожному введеному слові.
Яків

Хоча це не те, чого хотіла ОП, я дійсно вважав це корисним! У мене був десь збережений NSString, який був усіма великими літерами. Мені потрібно було порівняти текст UITextField з початковим рядком, і використання вашої рекомендації врятувало мене від необхідності пояснювати речі моєму користувачеві (я дозволяю Objective c виконувати всю роботу
:)

7

Так. У InterfaceBuilder, в інспекторі атрибутів textField, ви можете встановити властивість «Велика літера» у «Слова».


6

Є відповідь на Obj-C, я тут для Свіфта;

textField.autocapitalizationType = UITextAutocapitalizationType.words

або коротшим способом

textField.autocapitalizationType = .words

Я перевірив .words та .allCharacters. На Симуляторі він працює. На підключеному iPhone X він не працює. Xcode 10.1, iPhone 12.1.
geohei

1
Я не буду працювати, якщо в налаштуваннях -> Загальне -> Автовиправлення / Автокапіталізація вимкнено.
Sheetal Shinde

1

Ви навіть можете це зробити з файлу Storyboard або .xib. Потрібно лише вибрати текстове поле, а в інспекторі атрибутів праворуч є розділ «Велика літера», де ви можете вибрати все, що вам підходить. У вашому випадку це великі літери "Слова".


0

У Xamarin.ios / Monotouch це працювало для мене:

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.