- Published on
TextField va SecureField
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
HΠ°Ρ qanday ilovani oching β Login, Qidiruv, Ro'yxatdan o'tish β va siz darhol matn kiritish maydonlarini topasiz. SwiftUI-da oddiy matn kiritish uchun TextField, parol va maxfiy ma'lumotlar uchun SecureField. Ularning vazifasi bir xil: foydalanuvchi kiritgan matnni @State o'zgaruvchisiga ulash.
TextField ikkita narsa oladi: placeholder matn (bo'sh maydonda ko'rinadigan izoh) va $binding. Foydalanuvchi terishi bilan binding @State o'zgaruvchisini yangilaydi β bu erda hech qanday tugma bosish shart emas.
SecureField xuddi shunday ishlaydi, lekin kiritilgan belgilarni nuqtalar bilan yashiradi. Clipboard-dan nusxalashni ham oldini oladi. Parol maydonlari uchun har doim SecureField ishlating.
TextField modifikatorlari
.keyboardType()
// Raqam klaviaturasi
TextField("Telefon", text: $telefon)
.keyboardType(.numberPad)
// Email klaviaturasi β @ belgisi qulay
TextField("Email", text: $email)
.keyboardType(.emailAddress)
// URL klaviaturasi
TextField("Veb-sayt", text: $url)
.keyboardType(.URL)
.submitLabel() va .onSubmit
TextField("Qidirish", text: $sorov)
// Return tugmasini "Search" deb ko'rsatadi
.submitLabel(.search)
// Return bosilganda ishlaydigan closure
.onSubmit {
qidirish(sorov)
}
Ko'p qatorli TextField
// axis: .vertical matn maydonini kerak bo'lganda kengaytiradi
TextField("Bio", text: $bio, axis: .vertical)
.lineLimit(4, reservesSpace: true)
.textFieldStyle(.roundedBorder)
Keng tarqalgan xato:
text: $emailda o'zgaruvchi nomidan oldin$belgisini unutish. Dollar belgisisiz siz binding emas β satrning joriy qiymatini uzatyapsiz. SwiftUI sizga kompilyatsiya xatosi ko'rsatadi, lekin oqimda bo'lganingizda buni e'tiborsiz qoldirish oson.$aloqani ikki tomonlama qiladigan narsa.
Qo'shimcha variantlar
.textContentType()
Bu modifier iOS-ga maydon qanday turdagi ma'lumot saqlashini bildiradi. iOS bu ma'lumotdan Keychain, Kontaktlar va kuchli parol generatoridan AutoFill taklif qilish uchun foydalanadi. Kichik qo'shimcha β lekin ilovangizni professional ko'rinishga keltiradi va foydalanuvchi uchun ishni osonlashtiradi.
// Tells iOS this is an email field β enables AutoFill from Contacts
TextField("Email", text: $email)
.textContentType(.emailAddress)
// Tells iOS this is a new password β triggers strong password suggestion
SecureField("Create password", text: $password)
.textContentType(.newPassword)
// Tells iOS this is an existing password β enables Keychain AutoFill
SecureField("Password", text: $password)
.textContentType(.password)
.autocapitalization()
Email, foydalanuvchi nomi, parol va URL uchun
.neverishlating. Ism va sarlavhalar uchun.words. Standart.sentencesbepul matn maydonlari va bio uchun mos.
// No autocapitalisation β good for usernames and emails
TextField("Username", text: $username)
.textInputAutocapitalization(.never)
// Capitalise the first letter of each word β good for names
TextField("Full name", text: $name)
.textInputAutocapitalization(.words)
// Capitalise every sentence (the default)
TextField("Bio", text: $bio)
.textInputAutocapitalization(.sentences)
Tezkor ma'lumotnoma
| Modifikator | Vazifasi |
|---|---|
.textFieldStyle(.roundedBorder) | Yumaloq burchakli chegara uslubi |
.keyboardType(.emailAddress) | Email klaviaturasi |
.keyboardType(.numberPad) | Raqam klaviaturasi |
.autocorrectionDisabled() | Avtoto'g'rilashni o'chiradi |
.textInputAutocapitalization(.never) | Bosh harfni avtomatik qo'yishni o'chiradi |
.submitLabel(.done) | Return tugmasi matni: .done, .go, .search, .send |
.onSubmit { } | Return bosilganda ishlaydigan closure |
Topshiriq: login ekrani
Email va parol uchun TextField/SecureField yarating. "Kirish" tugmasini ikkala maydon to'ldirilgunga qadar .disabled() qiling. .keyboardType(.emailAddress) va .autocorrectionDisabled() qo'shing. Simulyatorda sinab ko'ring.