Text Content Type: anlamsal türler ve UIKit

Yazar: IT Sectr Yayınlanma: 2026-07-07 Okuma süresi: 8 dk

Text Content Type, bir metin alanının hangi verileri beklediğini sisteme bildiren iOS mekanizmasıdır. UIKit, giriş alanlarını işaretlemek için UITextContentType sabitleri sağlar: e-posta, şifre, telefon, kullanıcı adı ve düzinelerce diğer anlamsal tür. Apple Human Interface Guidelines (2025)'e göre, doğru içerik türü yapılandırması, otomatik doldurma ve uyarlanabilir klavye sayesinde form doldurma hızını %40 artırır. Her metin alanında UITextContentType kullanın — kullanıcı deneyimini iyileştirir ve giriş hatalarını azaltır.

Kilit Noktalar

  • Text Content Type, UITextField ve UITextView için beklenen veri türünü belirten anlamsal bir etikettir
  • UITextContentType, 30'dan fazla önceden tanımlanmış tür içerir: e-posta, telefon, şifre, adres, ad, soyad ve diğerleri
  • Otomatik doldurma yalnızca içerik türü doğru şekilde belirtildiğinde çalışır — sistem alanı anahtarlıktaki verilerle eşleştirir
  • Klavye türe uyum sağlar: e-posta için @ gösterir, telefon için sayısal düzen gösterir
  • Güvenlik — iCloud Keychain entegrasyonunu etkinleştirmek için şifreler ve tek kullanımlık kodlar için uygun türleri kullanın

Text Content Type Nedir?

Text Content Type (UITextContentType), giriş alanının hangi anlamsal verileri beklediğini iOS'a bildiren UIKit metin alanı özelliğidir. Sistem bu bilgiyi iki amaç için kullanır: uygun klavye düzenini seçmek ve anahtarlıktan (iCloud Keychain) otomatik doldurma mekanizmasını etkinleştirmek.

iOS 5, anlamsal türlerin ilk sürümünü tanıttı ve iOS 17'de UITextContentType seti 34 sabite genişleyerek tek kullanımlık kodlar, posta kodları ve sokak adları için yeni türler ekledi. Her sabit, sistemin iç işleme kurallarına eşlediği bir dizeyi temsil eder.

Mekanizma UITextInputTraits seviyesinde çalışır — UITextField, UITextView ve UISearchBar tarafından miras alınan bir protokol. Bu, içerik türünün ek yapılandırma gerektirmeden tüm standart giriş öğelerinde kullanılabilir olduğu anlamına gelir.

WWDC 2024 Oturum 101'e göre Apple, arayüzdeki her metin alanı için bir içerik türü belirtilmesini önerir — otomatik doldurma beklenmese bile. İşaretlemenin kendisi, VoiceOver'ın engelli kullanıcılar için alanın amacını doğru şekilde duyurmasına yardımcı olur.

Mevcut UITextContentType Türleri

UIKit, kategorilere ayrılmış bir tür hiyerarşisi sağlar. Ana gruplar tanımlama verileri (ad, soyad, kullanıcı adı), iletişim bilgileri (e-posta, telefon, adres) ve kimlik bilgileri (şifre, tek kullanımlık kod) içerir. Her grup farklı otomatik doldurma mekanizmalarını etkinleştirir.

İletişim Verileri

İletişim türleri grubu `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` ve `.city` içerir. Bu türler, kişilerden ve iCloud Keychain'den otomatik doldurmayı etkinleştirir. `.emailAddress` türündeki bir alan, daha önce girilen e-posta adreslerini otomatik olarak önerirken, `.telephoneNumber` adres defterinden telefon numaralarını önerir.

Kimlik Bilgileri

Oturum açma alanları için .username, .password ve .newPassword tasarlanmıştır. .username türü, kaydedilmiş kimlik bilgilerini sunan iCloud şifre yöneticisini etkinleştirir. .newPassword türündeki bir alan, ilk girişte iCloud Keychain aracılığıyla güçlü şifre oluşturmayı başlatır.

iOS 17+ Özelleşmiş Türler

iOS 17'den itibaren Apple, SMS onay kodları için .oneTimeCode ve paket takibi için .shipmentTrackingNumber ekledi. .oneTimeCode türü, mesajlardaki kodları otomatik olarak tanır ve Mesajlar uygulamasını açmaya gerek kalmadan QuickType çubuğunda sunar.

KategoriTürleriOS
Tanımlama.name, .givenName, .familyName, .nickname5+
Kişiler.emailAddress, .telephoneNumber, .fullStreetAddress5+
Kimlik Bilgileri.username, .password, .newPassword5+
Konum.location, .city, .state, .postalCode10+
Kart Verileri.creditCardNumber, .creditCardSecurityCode12+
Tek Kullanımlık Kodlar.oneTimeCode17+

Her tür bir dize sabiti ile temsil edilir, ancak rawValue yerine == operatörü kullanılarak karşılaştırılmalıdır. iOS gelecek sürümlerde yeni türler ekleyebilir, bu nedenle switch-case ifadelerinde her zaman bir default dalı kullanın.

Klavyenin İçerik Türüne Uyumu

UIKeyboardType ve UITextContentType birlikte çalışır: klavye türü klavye düzenini belirlerken, içerik türü QuickType çubuğuna ek düğmeler ekler. Bir içerik türü ayarlandığında, iOS optimum giriş için klavye türünü geçersiz kılabilir. Örneğin, `.emailAddress` türünde klavye ana katmanda otomatik olarak @ sembolünü gösterir.

.telephoneNumber türündeki bir alan için iOS, ayarlanan klavye türünden bağımsız olarak klavyeyi telefon düzenine geçirir. Bu davranış devre dışı bırakılamaz — sistem içerik türünün önceliğini açık klavye yapılandırmasından daha yüksek kabul eder. Geliştiricilerin her iki özelliği de yapılandırması gerekmez.

.URL ve .emailAddress türleri, klavyeye sırasıyla .com ve @ düğmeleri ekler. .creditCardNumber içerik türüyle .decimalPad türü, ondalık ayırıcılı sayısal bir klavye gösterir; bu, tutar ve kart numarası girmek için kullanışlıdır. Apple Human Interface Guidelines'a göre, kullanıcılar klavyenin girilen veri türüyle eşleşmesini bekler, tersi değil.

Bir istisna .oneTimeCode'dur — bu tür klavye düzenini değiştirmez ancak SMS'lerden gelen kodlarla QuickType çubuğunu etkinleştirir. Kullanıcı klavyenin üzerinde bir kod önerisi görür ve tek dokunuşla ekleyebilir. Mekanizma yalnızca SMS aldıktan sonra first responder olan alanlar için çalışır.

Otomatik Doldurma ve Anahtarlık

iOS'taki otomatik doldurma, giriş alanlarını iCloud Keychain ve ASCredentialProviderViewController verileriyle eşleştirmek için Text Content Type'ı kullanır. Sistem ekrandaki tüm alanları analiz eder, anlamsal türlerini belirler ve ilgili kaydedilmiş verileri sunar. Türler doğru şekilde belirtilmeden otomatik doldurma etkinleştirilmez.

Otomatik doldurmanın çalışması için üç koşulun karşılanması gerekir. Birincisi, alanın doğru bir UITextContentType'a sahip olması gerekir. İkincisi, ekranın farklı türlerde en az iki alan içermesi gerekir (örneğin, .username ve .password). Üçüncüsü, uygulamanın bir web sitesiyle senkronizasyon için webcredentials yetkisiyle Associated Domains'i desteklemesi gerekir.

Anahtarlık (Keychain), kaydedilmiş kayıtları sınıflandırmak için içerik türünü kullanır. Bir alan .password olarak işaretlenmişse, sistem girilen değeri iCloud Keychain'de saklar ve bir sonraki oturum açmada sunar. .creditCardNumber türündeki alanlar, Face ID onayından sonra otomatik olarak Wallet'a kaydedilir.

.oneTimeCode türündeki tek kullanımlık kodlar için iOS 17, doğrudan SMS erişimi gerektirmeyen yeni AutoFill OTP mekanizmasını kullanır. Sistem, işletim sistemi düzeyinde mesajlardaki kodları yakalar ve uygulamanın mesaj içeriğini okumasını atlayarak QuickType çubuğu aracılığıyla uygulamaya iletir.

Swift'te Kullanım Örnekleri

Swift'te Text Content Type'ın temel yapılandırması, kod içinde textContentType özelliği veya Interface Builder aracılığıyla yapılır. Kodda, bir sabit ataması bir satır sürerken, IB'de istenen tür özellik denetçisindeki bir açılır menüden seçilir.

swift
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"

let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword

Otomatik doldurma ile programlı olarak oturum açma formu oluşturmak için, farklı içerik türlerine sahip her iki alanı da kullanın. Sistem bunları otomatik olarak oturum açma ve şifre olarak ilişkilendirir. Uygulama biyometrik oturum açmayı destekliyorsa, doğru hesap tanıma için .username türünde bir alan ekleyin.

swift
class LoginViewController: UIViewController {

    @IBOutlet var usernameField: UITextField!
    @IBOutlet var passwordField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        usernameField.textContentType = .username
        passwordField.textContentType = .password
        passwordField.autocorrectionType = .no
    }
}

SMS'den tek kullanımlık kod giriş alanı için .oneTimeCode türünü belirtin. Sistem, kodu aldıktan sonra QuickType çubuğunda otomatik olarak önerecektir. Geliştiricinin SMS okuma izni istemesi veya özel mesaj ayrıştırma uygulaması gerekmez.

swift
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"

iOS 17+ için .oneTimeCode türü, alan odağı olmadan otomatik doldurmayı destekler. Kullanıcı kod içeren bir SMS alırsa, iOS kodu kilit ekranında sunar ve kilidi açtıktan sonra kod, ilgili içerik türüne sahip etkin alana otomatik olarak eklenir.

Tür Seçimi İçin Öneriler

Doğru türü seçmek doğrudan form dönüşümünü ve kullanıcı deneyimini etkiler. Apple, mevcut en spesifik türün belirtilmesini şiddetle önerir. Örneğin, ad alanı için genel .name yerine .givenName kullanın — bu, sistemin kişilerden doğru adla otomatik doldurma önermesine olanak tanır.

Yaygın bir hatadan kaçının — bir kullanıcı adı alanı için .emailAddress ayarlamak. Uygulama e-postayı oturum açma olarak kullanıyorsa, oturum açma alanı için .username ve şifre alanı için .password belirtin. .emailAddress türü, yalnızca bir tanımlayıcı olarak değil, iletişim verisi olarak e-posta girişi için tasarlanmıştır.

Aynı türde birden çok alanı olan formlar için (örneğin, iki e-posta adresi), her alan için .textContentType özelliğini ayarlayın ancak farklı accessibilityIdentifier değerleri ekleyin. Bu, VoiceOver'ın alanları doğru şekilde duyurmasına yardımcı olur, ancak otomatik doldurma sistemi her iki alan için de aynı değeri önerebilir.

Dolu bir anahtarlıkla gerçek bir cihazda otomatik doldurmayı test edin. Simülatör iCloud Keychain'i tam olarak desteklemez ve otomatik doldurma davranışı farklılık gösterebilir. Apple Developer Forums (2025)'e göre, en yaygın otomatik doldurma sorunları, yanlış belirtilmiş içerik türünden kaynaklanır.

Sıkça Sorulan Sorular

textContentType, keyboardType'dan nasıl farklıdır?

UITextContentType anlamsal veri türünü tanımlarken, UIKeyboardType klavye düzenini tanımlar. İçerik türü, optimum giriş için klavye türünü geçersiz kılabilir.

Hangi türler iCloud Keychain'den otomatik doldurmayı etkinleştirir?

Otomatik doldurma, .username, .password, .newPassword, .emailAddress, .telephoneNumber ve .creditCardNumber türleri tarafından etkinleştirilir. Sistem bu türleri anahtarlıktaki verilerle eşleştirir.

Text Content Type WKWebView'de çalışır mı?

Evet, WKWebView, autocomplete özniteliğine sahip HTML alanları için Text Content Type'ı destekler. iOS, autocomplete özniteliklerini otomatik olarak UITextContentType türlerine eşler.

UITextView için content type belirtmem gerekir mi?

Evet, UITextView de UITextInputTraits'i miras alır ve textContentType özelliğini destekler. Bu, iletişim verileri için çok satırlı giriş alanlarında kullanışlıdır.

Yanlış belirtilmiş bir türde ne olur?

Sistem, otomatik doldurma için yanlış veriler önerebilir veya hiçbir şey önermeyebilir. Örneğin, .emailAddress türündeki bir kullanıcı adı alanı, oturum açma adı yerine bir e-posta önerebilir.

Özet

  • Text Content Type, iOS giriş alanları için beklenen veri türünü belirleyen anlamsal bir etikettir
  • UITextContentType, farklı kategoriler için 30'dan fazla sabit içerir: kişiler, kimlik bilgileri, konum, ödeme verileri
  • Klavye içerik türüne otomatik olarak uyum sağlar, gerekli karakterleri ve düzeni gösterir
  • iCloud Keychain'den otomatik doldurma yalnızca alan türleri doğru şekilde belirtildiğinde etkinleştirilir
  • iOS 17+'da OTP mekanizması mesajlara erişmeden SMS'lerden kodları otomatik olarak ekler
  • VoiceOver, alanın amacını doğru şekilde duyurmak için içerik türünü kullanır
  • Öneri — her alan için en spesifik türü belirtin ve otomatik doldurmayı gerçek bir cihazda test edin

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun