Jenis kapitalisasi otomatis UITextField - Aplikasi iPhone

112

Apakah ada cara menyetel autocapitalizationType untuk a UITextFieldsehingga huruf pertama dari setiap kata dikapitalisasi secara default?

Ini Adalah Contoh Yang Saya Inginkan

CodeGuy
sumber
45
Di sisi lain - menyenangkan bisa menggunakan 'UITextField capitalization' di google dan memunculkan pop-up ini dalam 2 detik, daripada membuang waktu satu menit penuh untuk membuka dokumentasi dan memindai ini. Dokumentasi StackOverflow IS.
Shaun Budhram
1
Tersandung pada pertanyaan seperti ini membuat saya senang bahwa 1) orang mampu mengajukan pertanyaan langsung yang koheren (tidak peduli ruang lingkupnya) dan 2) orang mengomentari
Will Von Ullrich

Jawaban:

237

Menggunakan textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Untuk informasi lebih lanjut silakan baca: Referensi Protokol UITextInputTraits

AlexVogel
sumber
2
Tidak membantu jika Anda melewati teks ke bidang. Dalam hal ini mendelegasikan input teks dan mengganti huruf pertama dari setiap kata
HotJard
Maukah Anda menjelaskan lebih lanjut tentang HotJard? Saya ingin tahu cara menempelkan teks dan modal otomatis.
vnchopra
5
Tidak berhasil, saya mencobanya di Xcode 6 iOS 8 Swift. Saya melakukannya di pembuat kode dan antarmuka, tidak ada yang berhasil.
Van Du Tran
10
Pastikan keyboard di pembuat antarmuka disetel ke default. Jika tidak, itu tidak akan berhasil
OscarVGG
3
Pastikan juga Anda mengaktifkan kapitalisasi otomatis di pengaturan os (pengaturan-> umum-> keyboard), nilai pengaturan iOS menimpa apa pun yang Anda atur di bidang teks
Lope
38

Yang ingin kami lakukan adalah mengatur bidang teks autocapitalizationType.

Objective-C:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

Cepat:

self.textfield.autocapitalizationType = .words

Ada beberapa opsi di sini:

masukkan deskripsi gambar di sini

  • allCharacters sama dengan mengetuk dua kali tombol shift, pada dasarnya capslock.
  • none cukup jelas, keyboard tidak akan pernah mencoba menggunakan huruf besar.
  • sentences akan mencoba menggunakan huruf besar untuk kata berikutnya setelah tanda baca tanda akhir.
  • words akan mencoba menggunakan huruf besar untuk setiap kata baru (setelah spasi), yang tampaknya persis seperti yang Anda cari.

Properti ini juga dapat disetel dari Attributes Inspector pembuat antarmuka saat Anda memilih kolom teks yang sesuai:

masukkan deskripsi gambar di sini

"Kapitalisasi" adalah opsi pertama dalam grup ini, baru saja lulus pemilihan ukuran font minimum untuk bidang teks.

nhgrif
sumber
8

Menyetel capitalizationproperti ke "Kata" akan menyarankan agar pengguna memasukkan kata-kata dengan huruf besar. Ini dapat diganti oleh pengguna dengan melepas perpindahan pada keyboard. Hal terbaik untuk dilakukan adalah memanfaatkan kata-kata dalam kode:

NSString *text = [myTextField.text capitalizedString];
Evan Mulawski
sumber
Ini akan mengubah seluruh string menjadi kapital, UITextAutocapitalizationTypeWords hanya menggunakan huruf besar pada huruf pertama di setiap kata yang diketik.
Yakub
Meskipun ini bukan yang diinginkan OP, saya benar-benar merasa berguna! Saya memiliki NSString yang disimpan di suatu tempat, yang semuanya menggunakan huruf besar. Saya perlu membandingkan teks UITextField dengan string aslinya, dan menggunakan rekomendasi Anda menyelamatkan saya dari keharusan menjelaskan hal-hal kepada pengguna saya (saya biarkan Objective c melakukan semua pekerjaan
:)
7

Iya. Di InterfaceBuilder, di inspektur atribut textField, Anda dapat menyiapkan properti Kapitalisasi ke Words.

Marsson
sumber
6

Ada jawaban untuk Obj-C, saya di sini untuk Swift;

textField.autocapitalizationType = UITextAutocapitalizationType.words

atau cara yang lebih pendek

textField.autocapitalizationType = .words
Kemal Can Kaynak
sumber
Saya menguji .words dan .allCharacters. Di Simulator, itu berfungsi. Pada iPhone X yang terhubung, tidak. Xcode 10.1, iPhone 12.1.
geohei
1
Saya tidak akan bekerja jika dalam pengaturan -> Umum -> Koreksi Otomatis / Kapitalisasi Otomatis dimatikan.
Sheetal Shinde
1

Anda bahkan dapat melakukannya dari Storyboard atau file .xib. Hanya perlu memilih bidang teks dan di inspektur atribut di sebelah kanan ada bagian Kapitalisasi tempat Anda dapat memilih apa pun yang cocok untuk Anda. Dalam kasus Anda, ini adalah kapitalisasi "Kata".

mgm
sumber
0

Di Xamarin.ios / Monotouch, ini berhasil untuk saya:

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
Daniele D.
sumber