2012-04-01 21 views
7

Sıçrama üzerinde ses kullanırken, ekranın alt kısmında bulunan UIPageControl seçildiğinde, VoiceOver "Sayfa 1/5 Ayarlanabilir." ve kullanıcı sayfaları değiştirmek için yukarı ve aşağı kaydırabilir.UIPageControl ve VoiceOver/erişilebilirlik

Uygulamamda "Ayarlanabilir" bölümü alamıyorum ve sayfalar kaydırılarak değiştirilemiyor.

Bunu nasıl düzelttiğime dair herhangi bir fikriniz var mı? Açıkçası uygulamanın kullanılabilirliğini öldürür.

+0

Bunu InterfaceBuilder veya programlı olarak mı yapıyorsunuz? [UIAccessibilityTraitAdjustible] özelliğini (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAccessibilityAction_Protocol/Introduction/Introduction.html) eksik olarak görüyor - Sayfa Denetimini doğrudan veya içeride kullanıyor musunuz? nasıl yönetileceğini bilen başka bir görünüm?) –

cevap

8

alt sınıfına sahibim ve UIAccessibilityTraitAdjustable geri döndürmek için UIAccessibilityTraitAdjustable alıcısını "ayarlanabilir" değerine geri döndürmek üzere altını çiziyorum.

Eylem eklemek için: UIAccessibilityAction kategorisinde belirtilen -accessibilityIncrement ve -accessibilityDecrement yöntemlerini uygulayın.

Sayfalarım UIControlEventValueChanged olaylarına yanıt verdiğinden, bu etkinlik için de eylem göndermeyi unutmayın. hiçbir özel işleme -

Örnek kod

@interface AccessibleUIPageControl : UIPageControl 

@end 

@implementation AccessibleUIPageControl 

- (UIAccessibilityTraits)accessibilityTraits 
{ 
    return super.accessibilityTraits | UIAccessibilityTraitAdjustable; 
} 

- (void)accessibilityIncrement 
{ 
    self.currentPage = self.currentPage + 1; 
    [self sendActionsForControlEvents:UIControlEventValueChanged]; 
} 

- (void)accessibilityDecrement 
{ 
    self.currentPage = self.currentPage - 1; 
    [self sendActionsForControlEvents:UIControlEventValueChanged]; 
} 

@end 
+1

Genellikle, [özellikleri birleştirir] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAccessibility_Protocol/#//apple_ref/occ/instp/Superbject/accessibilityTraits) 'super''dan istenen özelliklere sahip,' return super.accessibilityTraits | UIAccessibilityTraitAdjustable'. – Adrian

3

iOS 9 ve daha yeni destekleyen ediyorsanız, bu davranış artık standarttır.

iOS 8 destekleyen ediyorsanız ve alt, alt sınıf UIPageControl ve accessibilityIncrement ve accessibilityDecrement geçersiz kılar. Ayarlanabilir olduğunu belirtmek için accessibilityTraits özelliğini geçersiz kılmanız gerekmez - UIPageControl varsayılan olarak ayarlanabilir.

import UIKit 

class AccessibleUIPageControl: UIPageControl { 

    override func accessibilityIncrement() { 
     self.currentPage += 1 
     self.sendActionsForControlEvents(.ValueChanged) 
    } 

    override func accessibilityDecrement() { 
     self.currentPage -= 1 
     self.sendActionsForControlEvents(.ValueChanged) 
    } 

} 

Sonra görünümü denetleyicisi size ValueChanged için dinleyebilir ve yeni sayfa için içerik göstermek için uygun şekilde yanıt:

//viewDidLoad: 
self.pageControl.addTarget(self, action: "didChangePage", forControlEvents: .ValueChanged) 

func didChangePage() { 
    let contentOffset: CGFloat = collectionView.frame.size.width * CGFloat(pageControl.currentPage) 
    collectionView.setContentOffset(CGPointMake(contentOffset, 0), animated: false) 
} 

Not Eğer/eylem olacak bu hedefe UIPageControl alt sınıf yoksa o hala çağrılmalı ama mevcut sayfa nokta göstergesi güncellenmeyecek.

+0

Merhaba, sayfa denetimi ile karşılaştığım sorun, odak üstünde olduğunda sayacı artırmak veya azaltmak için alamıyorum. IOS 10 ve üstü platformları hedefliyorum. Bana yardım etmenin bir yolu var mı? Teşekkürler! –

+0

@KarthikKannan Üzgünüm, bu sorunu kendim görmedim – Joey

İlgili konular