iOS Erişilebilirlik (Accessibility)
Apple, Erişilebilirlik (Accessibility) entegrasyonu için birçok yardımcı araca sahiptir. Seslendirme (Voice Over) işlemine başlamadan önce, Erişilebilirlik Denetçisi (Accessibility Inspector) ekranda seçili olan nesnenin tüm özelliklerini, değerlerini, yöntemlerini ve konumunu (ekranda gerçekleşebilecek eylemler) görüntüleyen bir araçtır.
Tüm erişilebilirlik unsurlarına bakmak için erişilebilirlik denetçisini nasıl açacağımıza bakarak başlayalım.
Erişilebilirlik Denetçisini Açmak
Xcode IDE üzerinde Xcode > Open Developer Tool > Accessibility Inspector
Erişilebilirlik denetçisi açılınca sol üstteki gezinti yerinde bir hedef seçici göreceksiniz. Hedef seçicimde o an açık olan tüm cihazlarınızı görebilirsiniz. Bende üç seçenek görüyorum: Mac, iOS Simülatör ve iOS Cihazı. Simülatör’ümüzü seçelim.
XCode’dan devam edelim ve projemizi simülatörümüzde çalıştıralım. Erişilebilirlik denetçisinde, uygulamada gezinebilir ve ekrandaki objelere mouse ile dokunduğunuzda kullanıcının Seslendirme (Voice Over) ile sesli olarak ne duyacağını görebilirsiniz.
Erişilebilirlik Denetçisi ile uygulamada gezinebilir ve eylemler gerçekleştirebilirsiniz (Yani, Fotoğraf objesini tıklayabilirsiniz). Eylemler (Actions) altındaki Yap (Perform) butonlarını kullanarak tıklama, sürükleme, kaydırma gibi eylemleri gerçekleştirebilirsiniz.
Erişilebilirlik Denetçisi Denetimleri (Audits)
Ayrıca, erişilebilirlik denetçisinde uygulamanızda herhangi bir erişilebilirlik öğesinin eksik olup olmadığını görmenizi sağlayan Audit denetleme özelliği vardır.
Yukarıdaki ekran görüntüsünden görebileceğiniz gibi, uygulama şu anda dinamik metin boyutunu desteklemiyor. Dinamik metin boyutu, kullanıcıların öğenin metin boyutunu değiştirebilmesini sağlayan bir erişilebilirlik özelliğidir. Bu sorunun nasıl çözüleceğine dair bir öneri okumak için “?” üzerine tıklayabilirsiniz.
Erişilebilirlik Özellikleri Atama
Erişilebilir olmasını istediğiniz her öğe (buton, label, image) için erişilebilirlik özelliklerini atamanız gerekir. Uygulamamızın AccountViewController’ında @IBOutlet olarak tanımlı 3 tane (photoButton, pointButton ve usernameLabel) objemiz var:
Adım 1: Bir Objeyi Erişilebilir Olarak Tanımlama
Objelerimin her biri için onları erişilebilir olarak tanımladığınızdan emin olun. Ayrı bir configureAccessibility (_ album: album) fonksiyonu yazalım (viewcontroller açıldığında çağrılacak)
Adım 2: Objelerin Erişilebilirlik Özelliklerini tanımlayın
Eğer objeniz bir buton ise “UIAccessibilityTraitButton”, link ise “UIAccessibilityTraitLink” seçiniz.
Ulaşılabilirlik özelliklerinin bazı örnekleri şu şekildedir:
UIAccessibilityTraitNone: Objenin özelliği yok
UIAccessibilityTraitButton: Obje bir buton olarak tanınmalı UIAccessibilityTraitLink: Obje bir bağlantı olarak tanınmalı
UIAccessibilityTraitHeader: Obje bir başlık olarak tanınmalıdır
UIAccessibilityTraitSearchField: Obje bir arama kutusu olarak tanınmalıdır UIAccessibilityTraitImage: Obje resim olarak tanınmalı UIAccessibilityTraitSelected: Obje seçildi
UIAccessibilityTraitPlaysSounds: Obje seçildiğinde ses çıkarır UIAccessibilityTraitKeyboardKey: Obje bir klavye tuşu olarak tanınmalıdır UIAccessibilityTraitStaticText: Obje değişmeyecek bir metin olmalıdır
UIAccessibilityTraitSummaryElement: Obje özet bilgi verir
Label objemi “UIAccessibilityTraitStaticText”, buton objemi de “UIAccessibilityTraitButton” olarak tanımlayabilirim.
Adım 3: “accessibilityLabel”, “accessibilityValue” ve “accessibilityHint” değerlerini ayarlama
Uygulama içerisinde, kullanıcı Fotoğraf objesini seçtiğinde (veya sağa doğru kaydırdığında), sesli olarak şunu duyarlar: “Fotoğraf, Burada bir fotoğrafın bulunuyor, Fotoğraf değiştirmeyi sağlar”
“Fotoğraf”(accessibilityLabel):
Bu erişilebilirlik etiketinin, öğeyi tanımlamak için en iyi sözcüğü içermesi gerektiğini unutmayın.
“Burada bir fotoğrafın bulunuyor” (accessibilityValue):
Bu erişilebilirlik etiketinin şu anki değerini tanımlamak için kullanılır.
“Fotoğraf değiştirmeyi sağlar” (accessibilityHint):
Bu öğe üzerinde bir eylem sonucu ne olacağını kısa bir cümle ile açıklamak için kullanılır.
Yukarıdaki kodu incelersek fonksiyonumuzda bir Account parametremiz var. Bu parametre ile erişilebilirlik değerlerimizi dinamik bir şekilde gelen dataya göre ekleyebiliyoruz.
Kaynak:
UIAccessibility: https://developer.apple.com/documentation/uikit/accessibility/uiaccessibility
Supporting Accessibility: https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/SupportingAccessibility.html#//apple_ref/doc/uid/TP40007457-CH12-SW1