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ę


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


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.


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];

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.


6

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

textField.autocapitalizationType = UITextAutocapitalizationType.words

lub krócej

textField.autocapitalizationType = .words

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”.


0

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

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.