Ios'taki Özel Karakterlerle Özel Bir Klavye Uygulamayı Uygulayın

iOS Custom Klavye Extensions'ı Anlamak

iOS, sistem klavyesini değiştirebilecek veya ekleyebilecek özel klavye uzantıları oluşturmak için sağlam bir çerçeve sunar. Bu uzantılar ayrı süreçler olarak çalışır ve sandboxed, yani sistem kaynakları ve kullanıcı verileri ile sınırlı erişime sahiptir. "UIInputViewController' sınıfı herhangi bir özel klavye için temeldir, giriş işlemleri yönetmek, görüş düzeni ve iletişim kurmak.

Özel klavyeler özel karakterler, aksanmış mektuplar, emojiler veya hatta jest bazlı giriş dahil herhangi bir düzeni içerebilir: Apple açık kullanıcı izni olmadan ağ kaynaklarına erişemez ve hala geliştiriciler için esnekliği sağlarken anastroke verilerini toplamak zorunda değildir.

Özel bir klavye inşa ettiğinizde, aslında bir uygulama uzatması yaratıyorsunuz. uzatma ev sahibi bir uygulama içinde paketlenir ve kullanıcılar bu uygulamayı yüklemeli ve sonra uzatma işlemine tam olarak aşağıdaki şekilde etkinleştirmelidir.Settings > General > Klavye > Klavyeler).

Özel karakterler için, gerçek güç verimli erişim kalıpları tasarlarken yatıyor. Birçok geliştirici grup sembolleri mantıksal olarak, ek varyantlar için uzun baskı popupları sunuyor veya özel karakterlerle birlikte üretim hazır bir özel klavye oluşturmak için aşağıdaki bölümlere sahiptir.

Klavye Dahili Projesinin Belirlenmesi

Özel bir klavye oluşturmak Xcode içinde başlar. Hem bir konteyner uygulamasına hem de klavye uzatma hedefine ihtiyacınız var.

Xcode'da Yeni Hedef ekleyin

Mevcut iOS projenizi açın veya yeni bir tane yaratın.Süreme:0)File > Yeni > Hedef), sonra "ÖzelCharKeyboardViewler" olarak adlandırılan bir ürün adı verilir.

Configure Info.plist

uzatmanın “Info.plist”, “NSExction” altında iki kritik anahtar içerir:

Ayrıca "Privacy - Kamera Kullanımı Açıklama" sadece kamera tabanlı giriş özelliklerini (bir klavye için) içerseniz. gereksiz izinlerden kaçının.

İstekOpenAccess Entitlement

Varsayılan olarak, özel klavyeler ağ erişimine sahip değildir. Özel karakter setlerini indirmeniz veya bulut senkronizasyonu sağlamanız gerekiyorsa, “RequestOpenAccess’ anahtarını “NSExctionAttributes’te “Info.plist’ olarak ayarlayın ve bunu “YES” olarak ayarlayın.

Temel UI kurmak

“KeyboardViewController’in içindeki “Load’ yöntemi, klavye düzeninizi ayarladığınız yerdir. Bir hikaye dolabı kullanabilir veya arayüz programı tematik olarak inşa edebilirsiniz. Birçok özel karakterle karmaşık bir düzen için, programmatik UI dinamik boyutlandırma ve Auto Layout kısıtlamaları üzerinde daha iyi kontrol sunar.

override func viewDidLoad() {
 super.viewDidLoad()

 // Set up the main container view
 let stackView = UIStackView()
 stackView.axis = .vertical
 stackView.distribution = .fillEqually
 stackView.spacing = 4
 stackView.translatesAutoresizingMaskIntoConstraints = false
 self.view.addSubview(stackView)

 NSLayoutConstraint.activate([
 stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 4),
 stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -4),
 stackView.topAnchor.constraint(equalTo: view.topAnchor, constant: 4),
 stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -4)
 ])
}

Bu minimum kurulum, anahtarların sıralarını tutacak bir dikey yığın oluşturur.

Özel Karakterler için klavye Layout tasarımını tasarlayın

Özel karakter klavyeleri dikkatli bir organizasyon gerektirir. Kullanıcılar sonsuz anahtar sayfalar aracılığıyla avlanmadan hızla sembolleri bulmak gerekir. Gruplama sembolleri mantıksal kategorilere başlayın:

İki veya üç düzen katmanı uygulayın: Bir simge katmanına geçiş yapmak için ana bir alfabe katmanı ve muhtemelen daha az ortak karakterlerle ikincil bir tabaka kullanın. Özel bir anahtar kullanın (örneğin, “123” veya “#+=”), katmanların arasında geçiş yapmak için.

Ek Karakterler için uzun süreli Gestures

Eğer klavyeniz standart bir QWERTY düzeni gösterirse, kullanıcılar karakter çeşitlerini ortaya çıkarmak için uzun baskı beklerler. Örneğin, mevcut varyantlara “E” anahtar şovları “é”, “è”, “ê”, “ë”, bu, "LongUIPressGestureRecognizer" eklemek için her anahtara uzun baskı sağlarken, mevcut varyantajın üzerindeki anahtarı yukarıda belirtilen varyantlar ile kapatılmalıdır.

Apple'ın sistemi klavyesi iç bir mekanizma kullanır, ancak uzatmanız için, yüz yüzen bir balon olarak görünen bir “UIView” kullanabilirsiniz. popup güvenli alanın ötesine uzatmıyor ve bu da cihaz yönelimine saygı duyuyor.

Kod Snippet: Uzun Basını Anahtarlara Ekle

let longPress = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:)))
longPress.minimumPressDuration = 0.3
keyButton.addGestureRecognizer(longPress)

Eller içinde, devletin ".began", ".changed" ve "düşük" gösteri, güncelleme ve popup'tan seçim.

Anahtar Boyut ve Spacing

iOS cihazları ekran genişliğine göre değişir.Doğrusal boyutlandırmayı kullanın: iPhone'larda sıra başına 10-12 anahtar ve iPad'lerde biraz daha fazla olmalıdır.Her anahtar Apple'ın İnsan Interface Kılavuzlarını dokunmak için en az 28 puan olmalıdır. Set constraints so that keys correctly on small characters, enable that sembollerin açıkça görünür; temel etiketler için 16-18 puanlık bir font boyutu kullanın.

Text Doküman Proxy Proxy ile giriş

Bir kullanıcı anahtara dokunduğunda, klavye şu anda odaklanmış metin alanına karakter eklemek zorundadır. Bu, "textDocumentProxy' object, an exampleUITextDocumentProxy" örneği aracılığıyla yapılır.The proxy "insertText( :)", "deleteBackward()" ve "adjustTextPosition (byCharacterOffset:)" gibi yöntemler sunar.

Özel karakterler için, sık sık sık çokbayt 7-8 (örneğin emojiler veya bokslar) eklemek gerekir. Bunlar akut aksan (U+0301) ile doğru bir şekilde ele alınır, her iki karaktere de eklenirsiniz: “proxy.inText(”, “proxy.insert”, “proxy.insert” deyin, ancak önceden sorulan bir kombinasyon için daha basit: “U+0301).

Değiştirin ve Caps Lock

Üst kat ve alt harfler arasında seçim yapmak için devlet yönetimi ve opsiyonel olarak üst köşe sembollerini etkinleştirin.Değişim anahtar aktif olduğunda, klavyeniz üst köşe varyantlarını göstermelidir.(Yunan mektupları gibi), her ikisine de işaret eder veya alternatif sembolleri görüntülemek için kullanılabilir.

Bir boolean mülkünü kullanın “AktifAktif” durumu takip etmek için. kullanıcı geçiş anahtarına dokunduğunda, anahtarları kaplar ve yeniden yükleyin.For caps kilit, çift bir dokunuşu geçiş anahtarına tespit edin; kalıcı bir kapak devleti etkinleştirin ve bir gösterge göster (örneğin, vurgulayın).

Delete ve Cursor Control

“proxy.deleteBackward()” diye adlandırdığı bir silin anahtarı ekleyin. Özel bir karakter klavye için, kullanıcılar tüm kelimeleri çabucak silmeniz gerekebilir. “deletePoward()’ı “taleteleteBackward()’ı bir döngüde veya “adjustTextPosition” yöntemi kullanarak, cümleleri ve cümleleri kullanarak nasıl manipüle edebilirsiniz.

Gecikme veya geriye doğru hareket etmek için, "proxy.adjustTextPosition (byCharacterOffset: 1)" ve "-1", "önemli bir alan" veya "önemli bir alan" düğmesi için kullanılır.

Enabling ve Test the Klavye Extension

Simulator Test

Xcode'da, bir simülatörün üzerindeki konteyner uygulamasını çalıştırın. Sonra "Third-Party Klavye" bölümüne gidin; Genel > Klavye > Yeni klavye[Döneticileri ekle) ekle ve her zaman "Third-Party Klavyeleri" altında özel klavye uzatmanızı seçin.Bir metin alanı aktif olduğunda klavyenize geçiş yapmanız gerekebilir.

Fiziksel Cihaz Testi

Cihaz testleri önemlidir, çünkü simülatörün tüm iOS davranışını tamamen taklit etmiyor (örneğin, klavye yükseklik kısıtlamaları, otomatik-korreksiyon) bir geliştirme profili aracılığıyla bir cihazda konteyner uygulamasını yükleyin. Sonra Xcode'surFLT:0Attach'ı Süreç) işlemine izin verin: debug navigator'da, uzatma işleminizi seçin (örneğin, uzatma işleminizi seçin.

Common Issues

Gizlilik ve Kullanıcı İzinleri

Özel klavyeler kullanıcı gizliliği için bir endişe noktasıdır. Apple, klavyelerin toplanıp, iletmemesini veya açık kullanıcı onayı olmadan anahtarstroke verilerini depolamasını gerektirir. Aşağıdaki kılavuzlar kritiktir:

Kullanıcılarınızın klavyenizi etkinleştirdiğinde, iOS, klavyenin tüm anahtarstrokes toplamak için bir uyarı gösterir. Uygulamanızın yorum ve derecelendirmeleri, kullanıcıların verilerini riske atıp, App Store açıklamanızda ve konteyner uygulamasında dürüst ve şeffaflık hisseder.

Özel Karakter Access için Tasarım İpuçları

Fitts Yasası için organize semboller

En sık klavyenin merkezine veya daha kolay başparmak için alt sıraya yakın özel karakterler kullanılır. Örneğin, hedef kitleniz genellikle para para para verir, $, € ve simge katmanının ev sırasına £.

Görsel geri bildirim kullanın

Anahtar basıldığında, kısa bir popup (sistem klavyenin karakter önizlemesi gibi) girişleri doğrulamak için. Bu özellikle küçük semboller için faydalıdır.Her anahtar için "UIControl" tuşuna girin ve anahtarın üzerindeki bir magnified versiyonunu gösterir.

Semboller için bir Auto-Advance özelliği ekleyin

Özel bir karakter ekledikten sonra, birçok kullanıcı klavyenin mektup katmanına otomatik olarak geri dönmesini bekler. Bu davranışı konteyner uygulamasında bir seçenekle kaçırabilirsiniz. Bu, mektup ve sembollerin bir karışımını daha hızlı bir şekilde yazar.

Destek Accessabilityability

VoiceOver'un tüm anahtarlarını okuyabilmesini sağlayın. Her anahtar düğmesine karakter veya ismini (örneğin, “tehdit riski” *) Ana Sayfadaki kullanıcılar için de açık bir açıklama sağlar.

Ek düşünceler

Performans Optimizasyonu Performans Optimizasyonu

Klavye uzantıları hafızaya dayalı bir ortamda çalışır. ağır görüntüler veya karmaşık animasyonlar yüklemeden kaçının. hafif "UIButton' subclasses veya "UICollectionView' for effective yeniden.In older devices, form a full network of 30+ keys should be correct. Profile your extension with Instruments to check for framework drop.

Yerelleşme Yerelleşme

Eğer klavyeniz birden çok dili desteklerse, yerelleştirilmiş sembolü setlerini dikkate alın. Örneğin, bir Fransız kullanıcının “Defaults’a ortak bir süit (tekleme) ihtiyacı olduğunda, Ö, Ü. “PrimaryLanguage’ anahtarını varsayılan dilde ipucu için kullanın, ancak kullanıcıların “Defaults’a ortak bir paketi (tekleme App Grupları ile geçiş) izin verin, böylece uzatma tercihi okuyabiliyor.

App Store Review

Apple, normal uygulamalardan daha katı şekilde klavyenizin çökmesini sağlamak, saldırgan içerik içermemek ve devre dışı bırakmaktan kaçının.Sağdaki reklam pankartları veya promosyonlar kaçının.Eğer klavyeniz herhangi bir nedenden dolayı ağ erişimi gerektirirse, inceleme sürecinde haklı çıkarmaya hazır olun.

Güncellemeler ve Bakım

Yeni iOS versiyonları, klavye uzantılarının sistemle nasıl etkileşime girdiğini değiştirebilir. Beta sürümlerinde uzantınızı test edin ve güncelleme "UIInputView Controller' yöntemi uygulamaları gerekli olarak değiştirilebilir. Örneğin, iOS 16, iPad'lerde uzun klavyeler için yeni klavye düzeni API'leri tanıttı.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

iOS'ta özel bir klavye uygulamak, sembolleri, aksanmış mektuplar veya emojilere ihtiyaç duyan kullanıcılar için, sezgisel uzun baskı erişimi ve sağlam giriş işlemleri ile basit bir şekilde genişletilebilir.Sistem klavyesi hemen yüzeyle test eder.Özel klavye, kolayca tasarlandığında, basit olmayan karakterler için temel bir araç haline gelebilir.

Daha fazla okuma için, resmi Apple belgesine (İngilizce) başvurunuz:0) Özel bir klavye).