Typ automatycznego wpisywania wielkich liter w UITextField - aplikacja na iPhone'a

112

Czy istnieje sposób na ustawienie autocapitalizationType dla a, UITextFieldtak aby pierwsza litera każdego słowa była domyślnie pisana wielką literą?

To jest przykład tego, czego chcę

CodeGuy
źródło
45
Z drugiej strony - fajnie jest móc wpisać w Google „UITextField wielkie litery” i wyświetlić to w 2 sekundy, zamiast tracić całą minutę na otwieranie dokumentacji i skanowanie w poszukiwaniu tego. Dokumentacja StackOverflow IS.
Shaun Budhram
1
Natknięcie się na takie pytania sprawia mi radość, że 1) ludzie są w stanie zadawać spójne bezpośrednie pytania (bez względu na zakres) i 2) ludzie komentują najlepsze s ***
Will Von Ullrich

Odpowiedzi:

237

Posługiwać się textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Aby uzyskać więcej informacji, przeczytaj: Odniesienie do protokołu UITextInputTraits

AlexVogel
źródło
2
Nie pomaga, jeśli wklejasz tekst do pola. W tym przypadku
deleguj
Czy zechciałbyś opracować więcej HotJard? Chciałbym wiedzieć, jak wkleić tekst i dokonać autokapitalizacji.
vnchopra
5
To nie działa, wypróbowałem go na Xcode 6 iOS 8 Swift. Zrobiłem to w programie do budowania kodu i interfejsu, ale też nie działa.
Van Du Tran
10
Upewnij się, że klawiatura w narzędziu do tworzenia interfejsów jest ustawiona jako domyślna. W przeciwnym razie to nie zadziała
OscarVGG
3
Upewnij się również, że w ustawieniach systemu operacyjnego włączono automatyczną kapitalizację (ustawienia-> ogólne-> klawiatura), wartości ustawień iOS zastępują wszystko, co ustawisz w polu tekstowym
Lope
38

Chcemy tylko ustawić pola tekstowe autocapitalizationType.

Cel C:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

Szybki:

self.textfield.autocapitalizationType = .words

Jest tutaj kilka opcji:

wprowadź opis obrazu tutaj

  • allCharacters działa tak samo, jak dwukrotne dotknięcie klawisza Shift, czyli w zasadzie Capslock.
  • none jest dość oczywiste, klawiatura nigdy nie będzie próbowała pisać wielkimi literami.
  • sentences spróbuje zamienić następne słowo na wielką literę po znaku interpunkcyjnym na końcu.
  • words spróbuje zapisać każde nowe słowo (po spacji) wielką literą, co wydaje się być dokładnie tym, czego szukasz.

Tę właściwość można również ustawić w Inspektorze atrybutów w narzędziu do tworzenia interfejsów, gdy wybrane jest odpowiednie pole tekstowe:

wprowadź opis obrazu tutaj

„Wielkie litery” to pierwsza opcja w tej grupie, która została właśnie przekazana, wybierając minimalny rozmiar czcionki dla pola tekstowego.

nhgrif
źródło
8

Ustawienie capitalizationwłaściwości na „Words” zasugeruje użytkownikowi wprowadzenie słów pisanych wielką literą. Użytkownik może to zmienić, cofając ruch na klawiaturze. Najlepszą rzeczą do zrobienia jest pisanie wielkich liter w kodzie:

NSString *text = [myTextField.text capitalizedString];
Evan Mulawski
źródło
Spowoduje to zamianę całego ciągu na wielką literę, a UITextAutocapitalizationTypeWords po prostu zamienia pierwszą literę na wielką literę w każdym wpisanym słowie.
Jacob
Chociaż nie tego chciał OP, naprawdę uznałem to za przydatne! Mam gdzieś zapisany NSString, który był pisany wielkimi literami. Musiałem porównać tekst UITextField z oryginalnym ciągiem i skorzystanie z Twojej rekomendacji uchroniło mnie przed koniecznością wyjaśniania rzeczy mojemu użytkownikowi (pozwoliłem Objective c wykonać całą pracę
:)
7

Tak. W InterfaceBuilder w inspektorze atrybutów textField można ustawić właściwość Capitalization na Words.

Marsson
źródło
6

Jest odpowiedź na Obj-C, jestem tutaj dla Swift;

textField.autocapitalizationType = UITextAutocapitalizationType.words

lub krócej

textField.autocapitalizationType = .words
Kemal Can Kaynak
źródło
Przetestowałem .words i .allCharacters. W symulatorze to działa. Na podłączonym iPhonie X tak nie jest. Xcode 10.1, iPhone 12.1.
geohei
1
Nie będę działać, jeśli w ustawieniach -> Ogólne -> Automatyczna korekta / Automatyczne pisanie wielkich liter jest wyłączone.
Sheetal Shinde
1

Możesz to nawet zrobić z pliku Storyboard lub .xib. Wystarczy zaznaczyć pole tekstowe, aw inspektorze atrybutów po prawej stronie znajduje się sekcja Kapitalizacja, w której możesz wybrać to, co Ci odpowiada. W twoim przypadku jest to wielkie litery „Words”.

mgm
źródło
0

W Xamarin.ios / Monotouch to zadziałało dla mnie:

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
Daniele D.
źródło