Otomatik Düzeltme, metin girerken yazım hatalarını otomatik olarak düzelten iOS'ta yerleşik bir mekanizmadır. UIKit, UITextInputTraits protokolündeki autocorrectionType özelliği aracılığıyla otomatik düzeltme davranışını yönetir ve üç modu destekler: varsayılan, etkin ve devre dışı. Apple Text Programming Guide (2025)'e göre otomatik düzeltme, sistem sözlüğü ve cihazda makine öğrenimine dayalı olarak girilen metni analiz eder. Her metin alanı için ayrı ayrı autocorrectionType kullanın — bu, davranışı girilen verilerin özelliğine göre uyarlamanıza olanak tanır.
Önemli Noktalar
Otomatik Düzeltme, bir yazım hatası tespit edildiğinde yazılan kelimeleri otomatik olarak varsayılan olarak doğru alternatiflerle değiştiren bir iOS işletim sistemi özelliğidir. Mekanizma, UIKit metin alanları seviyesinde çalışır ve standart UITextField ve UITextView giriş öğelerini kullanan tüm uygulamalarda kullanılabilir.
Otomatik düzeltmenin merkezinde, desteklenen her dil için milyonlarca metin örneği üzerinde eğitilmiş bir dil modeli bulunur. Model tamamen cihazda (on-device) çalışır ve girilen verilerin gizliliğini garanti eder — metin analiz için Apple sunucularına gönderilmez. Her iOS güncellemesiyle model yeni kelimeler ve kurallarla iyileştirilir ve genişletilir.
Otomatik düzeltme, geliştirici tarafından açıkça devre dışı bırakılmadıkça tüm metin alanları için otomatik olarak etkinleştirilir. Kullanıcı, sistem ayarlarından (Ayarlar > Genel > Klavye > Otomatik Düzeltme) otomatik düzeltmeyi tamamen devre dışı bırakabilir, ancak geliştirici autocorrectionType özelliği aracılığıyla tek tek alanlar için bu davranışı kontrol edebilir.
WWDC 2023 Oturum 204'e göre Apple, yalnızca son kelimeyi değil tüm cümlenin bağlamını dikkate alan Transformer tabanlı gelişmiş bir otomatik düzeltme dil modeli tanıttı. Bu, önceki n-gram tabanlı modele kıyasla yanlış düzeltmeleri %30 oranında azalttı.
UITextAutocorrectionType, belirli bir metin alanı için otomatik düzeltme davranışını belirleyen üç değere sahip bir numaralandırmadır. Her değer, Interface Builder'da ve alan oluşturulurken kodda erişilebilen autocorrectionType özelliği aracılığıyla ayarlanır.
.default değeri, alanın klavyenin sistem parametrelerinden genel otomatik düzeltme ayarını devraldığı anlamına gelir. Bu mod, kullanıcının seçimine saygı duyduğu için çoğu metin alanı için önerilir. Kullanıcı ayarlardan otomatik düzeltmeyi devre dışı bıraktıysa, .default olan bir alan da onu kullanmaz.
.yes değeri, sistem ayarından bağımsız olarak alan için otomatik düzeltmeyi zorla etkinleştirir. Bu mod yalnızca yazım doğruluğunun kritik olduğu alanlar için kullanılmalıdır — örneğin, metin düzenleyicilerde, not giriş alanlarında veya mesajlarda. Apple, .yes'in dikkatli kullanılmasını önerir çünkü zorla etkinleştirme kullanıcı beklentileriyle çelişebilir.
.no değeri, belirli bir alan için otomatik düzeltmeyi devre dışı bırakır. Bu mod, şifre alanları (güvenli metin girişi), e-posta adresleri, doğrulama kodları ve arama sorguları için zorunludur. Bu alanlarda otomatik düzeltme yalnızca yararsız değil, aynı zamanda zararlıdır — doğru girilen verileri hatalı alternatiflerle değiştirebilir.
| Mod | Değer | Öneri |
|---|---|---|
| .default | Sistem ayarını devralır | Çoğu giriş alanı |
| .yes | Zorla etkin | Metin düzenleyiciler, notlar |
| .no | Zorla devre dışı | Şifreler, e-posta, arama, kodlar |
iOS otomatik düzeltmesinin dil modeli, statik bir sözlük ve dinamik olarak eğitilmiş bir modelin kombinasyonunu kullanır. Sistem sözlüğü her dil için en sık kullanılan kelimeleri içerirken, Transformer tabanlı dil modeli bağlamı ve değiştirme olasılığını analiz eder. Model, kullanıcı tarafından girilen metinlere dayalı olarak cihazda eğitilir.
Kullanıcılar, klavye ayarları (Ayarlar > Genel > Klavye > Metin Değiştirme) aracılığıyla kişisel bir sözlüğe kelime ekleyebilir. Eklenen kelimeler iCloud'da saklanır ve aynı Apple ID kullanılarak cihazlar arasında senkronize edilir. Sistem, kişisel sözlükteki kelimeleri düzeltmez; bu, adlar, markalar ve teknik terimler için kullanışlıdır.
Uzmanlık alanları — tıbbi, hukuki, teknik — için standart sözlük yetersiz terimler içerebilir. Bu tür uygulamalarda, ilgili alanlar için otomatik düzeltmeyi devre dışı bırakmanız veya iOS 17+ için UIResponder yöntemi .replacementDictionary aracılığıyla özel metin değiştirme kullanmanız önerilir.
Apple Machine Learning Research (2024)'e göre, Transformer mimarisine dayalı yeni otomatik düzeltme modeli, önceki modeldeki 3 jetona kıyasla 10 bağlam jetonuna kadar işler ve kullanıcının niyetini daha doğru belirlemesine olanak tanır. Model yalnızca yazımı değil, cümlenin dilbilgisel yapısını da dikkate alır.
Safe Keyboard, secureTextEntry = true olan alanlar için otomatik olarak etkinleştirilen korumalı bir giriş modudur. Bu modda, otomatik düzeltme, otomatik büyük harf yazma ve tahmine dayalı giriş, ayarlanan autocorrectionType değerlerinden bağımsız olarak sistem tarafından devre dışı bırakılır. Sistem ayrıca kullanıcı sözlüğüne ve metin değiştirmelere erişimi de engeller.
Safe Keyboard, otomatik düzeltme mekanizmaları aracılığıyla girilen verilerin sızmasını önler. Otomatik düzeltme bir şifre alanı için etkin olsaydı, sistem girilen şifreyi kullanıcı sözlüğünde saklayabilir veya model eğitimi için Apple sunucularına gönderebilirdi. Safe Keyboard, gizli verilerin uygulamayı terk etmemesini sağlar.
Finansal uygulamalar için Safe Keyboard yalnızca secureTextEntry olan alanlar için otomatik olarak etkinleştirilir. Kart numarası, son kullanma tarihi ve CVV kodu giriş alanları için geliştiricinin autocorrectionType = .no ve keyboardType = .numberPad veya .phonePad ayarlayarak otomatik düzeltmeyi manuel olarak devre dışı bırakması gerekir.
iOS 17'den itibaren Safe Keyboard, üçüncü taraf klavyeler aracılığıyla dinlemeye karşı korumayı destekler. Kullanıcı App Store'dan bir klavye yüklediyse, secureTextEntry etkinleştirildiğinde, varsayılan olarak seçilmiş olsa bile sistem klavyesi otomatik olarak üçüncü taraf klavyenin yerini alır. Bu, şifrelerin yalnızca güvenli sistem klavyesi aracılığıyla girilmesini sağlar.
Swift'te otomatik düzeltme yönetimi, UITextField ve UITextView nesnelerinin autocorrectionType özelliği aracılığıyla yapılır. Özellik hem okuma hem de yazma için kullanılabilir ve giriş bağlamına bağlı olarak dinamik olarak değiştirilebilir. Interface Builder aracılığıyla yapılandırma, özellik denetçisinde Correction adı altında kullanılabilir.
let textField = UITextField()
textField.autocorrectionType = .no
Bir giriş formu için, otomatik düzeltme şifre alanı için devre dışı bırakılmalı ve giriş alanı için varsayılan olarak etkinleştirilmelidir. E-posta alanının da otomatik düzeltme olmadan bırakılması önerilir, çünkü @ sembolü ve alan adları sıklıkla yanlış değiştirilir. Kullanıcı adı alanı için, kullanıcı adı okunabilir bir kelimeyse otomatik düzeltme etkinleştirilebilir.
class RegistrationViewController: UIViewController {
@IBOutlet var nameField: UITextField!
@IBOutlet var emailField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
nameField.autocorrectionType = .yes
emailField.autocorrectionType = .no
emailField.textContentType = .emailAddress
}
}
UITextView için otomatik düzeltme yapılandırması benzer şekilde yapılır. Bu, otomatik düzeltmenin en büyük faydayı sağladığı ancak teknik terimler veya kod girerken de rahatsızlık yaratabileceği yorumlar, mesajlar ve notlar için çok satırlı giriş alanlarında özellikle önemlidir.
let textView = UITextView()
textView.autocorrectionType = .default
Dinamik değişiklikler için UITextFieldDelegate protokolünü kullanın. textFieldDidBeginEditing yöntemi, bir alan etkinleştirildiğinde çağrılır ve burada geçerli bağlama veya uygulama çalışması sırasında değişebilen alanın rolüne bağlı olarak autocorrectionType'ı değiştirebilirsiniz.
Otomatik düzeltme devre dışı bırakılmalıdır girilen verilerin doğruluğunun kritik olduğu ve sistemin kullanıcının niyetini doğru şekilde belirleyemediği alanlarda. Ana durumlar: şifre ve güvenli veri alanları, e-posta adresi giriş alanları, arama dizeleri, kod ve program kodu giriş alanları ile standart olmayan veri biçimlerine sahip alanlar.
Arama çubukları (UISearchBar) için otomatik düzeltme varsayılan olarak devre dışıdır ve bu kullanıcı beklentileriyle örtüşür. Arama yaparken kullanıcı eksik kelimeler, teknik terimler veya farklı dillerde sorgular girebilir ve otomatik düzeltme yalnızca engel olur. URL ve alan adı giriş alanları için de benzer şekilde.
Mesajlaşma uygulamalarında ve iletişim uygulamalarında otomatik düzeltme genellikle etkindir, ancak argo, kısaltmalar ve resmi olmayan kelimeler girerken rahatsızlık yaratabilir. Bu gibi durumlarda kullanıcı, klavye ayarları aracılığıyla otomatik düzeltmeyi devre dışı bırakabilir veya geliştirici, uygulama arayüzünde doğrudan bir anahtar sağlayabilir.
Apple Human Interface Guidelines'a göre, girilen verilerin sistem sözlüğünde bulunamayabileceği herhangi bir alan için otomatik düzeltme devre dışı bırakılmalıdır: sipariş numaraları, rezervasyon kodları, tanımlayıcılar, IMEI, MAC adresleri. Alan standart olmayan bir biçimde alfanümerik veri kabul ediyorsa — otomatik düzeltmeyi devre dışı bırakın.
Sıkça Sorulan Sorular
Tüm uygulama için genel bir otomatik düzeltme devre dışı bırakma yoktur. Her metin alanı için ayrı ayrı autocorrectionType = .no ayarlamak veya geçersiz kılınmış bir değerle UITextField alt sınıfı oluşturmak gerekir.
Simülatör, Mac klavyesinden basitleştirilmiş bir giriş modeli kullanır. Otomatik düzeltme dil modeli simülatörde etkin değildir — test için gerçek bir cihaz kullanın.
Kullanıcı, Ayarlar > Genel > Klavye > Metin Değiştirme aracılığıyla kelime ekleyebilir. Uygulamanın sistem otomatik düzeltme sözlüğüne programatik olarak kelime eklemesi için bir API yoktur.
Hayır, keyboardType otomatik düzeltmeyi etkilemez. .numberPad klavyesi için bile, autocorrectionType aracılığıyla açıkça devre dışı bırakılmadıysa otomatik düzeltme etkin olabilir.
Üçüncü taraf klavyeler kendi otomatik düzeltme mekanizmalarına sahiptir ve sistem UITextAutocorrectionType'ını kullanmaz. Davranış, belirli klavyenin uygulanmasına bağlıdır.
Özet
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.
Ayrıca okuyun