Tipo di capitalizzazione automatica UITextField - App per iPhone


112

C'è un modo per impostare autocapitalizationType per a in UITextFieldmodo che la prima lettera di ogni parola sia maiuscola per impostazione predefinita?

Questo è un esempio di quello che voglio


45
D'altra parte, è bello poter cercare su Google "maiuscole UITextField" e visualizzare questo popup in 2 secondi, invece di sprecare un minuto intero per aprire la documentazione e cercare questo. Documentazione StackOverflow IS.
Shaun Budhram,

1
Inciampare in domande come questa mi rende felice che 1) le persone siano in grado di porre domande dirette e coerenti (indipendentemente dallo scopo) e 2) le persone commentino le migliori s ***
Will Von Ullrich

Risposte:


237

Uso textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Per ulteriori informazioni, leggere: Riferimento al protocollo UITextInputTraits


2
Non aiuta se incolli il testo nel campo. In questo caso, delegare l'input di testo e sostituire la prima lettera di ogni parola
HotJard

Ti andrebbe di elaborare ancora un po 'di HotJard? Mi piacerebbe sapere come incollare un testo e autocapitalizzarlo.
vnchopra

5
Non funziona, l'ho provato su Xcode 6 iOS 8 Swift. L'ho fatto nel generatore di codice e interfaccia, nessuno dei due funziona.
Van Du Tran

10
Assicurati che la tastiera in Interface Builder sia impostata come predefinita. Altrimenti non funzionerà
OscarVGG

3
Assicurati inoltre di avere la maiuscola automatica abilitata nelle impostazioni del sistema operativo (impostazioni-> generale-> tastiera), i valori delle impostazioni iOS sovrascrivono qualsiasi cosa tu abbia impostato nel campo di testo
Lope

38

Quello che vogliamo fare è impostare il campo di testo autocapitalizationType.

Objective-C:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

Swift:

self.textfield.autocapitalizationType = .words

Ci sono alcune opzioni qui:

inserisci qui la descrizione dell'immagine

  • allCharacters equivale a toccare due volte il tasto Maiusc, fondamentalmente il blocco maiuscole.
  • none è abbastanza autoesplicativo, la tastiera non proverà mai a scrivere maiuscole.
  • sentences proverà a scrivere in maiuscolo la parola successiva dopo la punteggiatura del segno di fine.
  • words proverà a scrivere in maiuscolo ogni nuova parola (dopo uno spazio), che sembra essere esattamente quello che stai cercando.

Questa proprietà può essere impostata anche dall'ispettore degli attributi del generatore di interfacce quando è stato selezionato il campo di testo appropriato:

inserisci qui la descrizione dell'immagine

"Maiuscole" è la prima opzione in questo gruppo, appena passata selezionando la dimensione minima del carattere per il campo di testo.


8

L'impostazione della capitalizationproprietà su "Words" suggerirà all'utente di inserire parole in maiuscolo. Questo può essere sovrascritto dall'utente deselezionando lo spostamento sulla tastiera. La cosa migliore da fare è scrivere in maiuscolo le parole nel codice:

NSString *text = [myTextField.text capitalizedString];

Questo renderà l'intera stringa in maiuscolo, UITextAutocapitalizationTypeWords rende solo maiuscola la prima lettera di ogni parola digitata.
Jacob

Sebbene questo non fosse quello che voleva l'OP, l'ho trovato davvero utile! Avevo un NSString salvato da qualche parte, che era tutto maiuscolo. Avevo bisogno di confrontare il testo di un UITextField con la stringa originale e l'utilizzo della tua raccomandazione mi ha evitato di dover spiegare le cose al mio utente (ho lasciato che Objective c facesse tutto il lavoro
:)

7

Sì. In InterfaceBuilder, nella finestra di ispezione degli attributi textField, puoi impostare la proprietà Capitalization su Words.


6

C'è una risposta per Obj-C, sono qui per Swift;

textField.autocapitalizationType = UITextAutocapitalizationType.words

o modo più breve

textField.autocapitalizationType = .words

Ho provato .words e .allCharacters. Sul simulatore, funziona. Su un iPhone X connesso, non è così. Xcode 10.1, iPhone 12.1.
geohei

1
Non funzionerò se in impostazione -> Generale -> Correzione automatica / Maiuscole automatiche è disattivato.
Sheetal Shinde

1

Puoi anche farlo dal file Storyboard o .xib. Devi solo selezionare il campo di testo e nell'ispettore degli attributi sulla destra c'è una sezione Maiuscole in cui puoi scegliere quello che fa per te. Nel tuo caso si tratta di "Parole" in maiuscolo.


0

In Xamarin.ios / Monotouch questo ha funzionato per me:

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.