2012-06-08 34 views
0

我有一個自定義控件(UIView子類),它與鎖定屏幕上的「滑動解鎖」控件相同。自定義滑塊控件上的UIAccessibility

當Voiceover選擇視圖時,我可以通知我嗎?而且,當它被選中時,手勢識別器沒有接收手勢,因此使控制無效。

任何提示?到目前爲止,我已經設置了isAccessibilityElement和標籤/提示。

+0

我知道你的問題已經回答了觸發但你應該看看蘋果公司用VoiceOver的「幻燈片解鎖」功能。他們把它變成「雙擊解鎖」。否則,對於像音量等普通滑塊,你應該看看'accessibilityIncrement'和'accessibilityDecrement'方法。 –

回答

3

我必須做兩件事情,使其工作:

self.accessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction; 

,並增加了雙敲擊手勢識別,只有當聲音運行

UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(didDoubleTap:)]; 
    doubleTapGestureRecognizer.numberOfTapsRequired = 2; 
    [self addGestureRecognizer:doubleTapGestureRecognizer]; 

- (void)didDoubleTap:(UITapGestureRecognizer*)tapGesture { 
    if(UIAccessibilityIsVoiceOverRunning()){ 
     [self slideHandleToFinish]; 
    } } 
+0

這也適用於我。設置UIAccessibilityTraitAllowsDirectInteraction可使VoiceOver接收我的UISwipeGestureRecognizer。 –

+0

謝謝,蘋果說我們只需要添加之前的accessibilityTrais,否則我們會失去他們(在我的情況下,我失去了很多),像這樣:self.accessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction | [super accessibilityTraits];請注意UIAccessibilityConstants.h作爲UIAccessibilityTraits的註釋:「當設置可訪問性狀時,將自定義特性與 [super accessibilityTraits]組合在一起。不正確的自定義特性組合 將導致可訪問性客戶端錯誤地解釋元素。 – meronix