2011-08-08 8 views
9

私は自分のiPhoneアプリにアクセス可能にしています。 VoiceOverはかなり印象的です。ユーザーがVoiceOverを使用すると、画面上の項目が自動的に読み取られ、画面上の任意の場所をダブルタップしてその項目を選択することができます。しかし、私はVoiceOverが特定の順序で項目を読むようにしたいが、それは常に戻るボタンを含むUINavigationBar項目から始まる。私はこれらの商品がでなく、であるとは思っていません。私はただ特定のアイテムから始めたいと思います。 VoiceOverに相当する「firstResponder」はありますか?プログラムによって、VoiceViewによってUIView項目が読み取られる順序を決定します。

答えて

0

場合によっては、1つのアイテムでUIAccessibilityTraitSummaryElementを設定することができます。 (これは非常に役立つようにするために私のゲームはあまりにもダイナミックなようです。)

+0

おそらく - 私はUIAccessibilityTraitSummaryElementを誤解しているかもしれませんが、単に画面のエントリで話されているものかもしれません。フォーカスされたアイテムと同じではありません。 –

6

はい

NSObjectので実装されUIAccessibilityContainerと呼ばれるプロトコルがあります。あなたは、アクセシビリティの順序を制御したいメインビューを持っている場合は

  • accessibilityElementCount
  • accessibilityElementAtIndex:
  • indexOfAccessibilityElement:

:それは、これらの3つのメソッドを使用して、コンテナの動作をカスタマイズすることができますこれらの3つのメソッドを実装し、適切なビュー/インデックスを返すだけです。もう1つは、コンテナビューがアクセシビリティ要素そのものになることができないため、isAccessibilityElement:をオーバーライドしてNOを返す必要があります。

- (BOOL)isAccessibilityElement { 
    return NO; 
} 

実装例

は、私はあなたがそれらが表示されるか、何のためにそれを使用しない場合 tagプロパティを使用するために、すべてのビューの配列を持っているいずれかのことを示唆していますelse。プロトコルの実装は非常に簡単になります。要素

アレイ私はあなたが正しい順序で要素を格納accessibleElementsと呼ばれる配列を持っていると仮定しています。

- (NSInteger)accessibilityElementCount { 
    return self.accessibleElements.count; 
} 

- (id)accessibilityElementAtIndex:(NSInteger)index { 
    return self.accessibleElements[index]; 
} 

- (NSInteger)indexOfAccessibilityElement:(id)element { 
    return [self.accessibleElements indexOfObject:element]; 
} 

タグ要素

私はあなたのサブビューは、サブビューの数まで0から連続的にタグ付けされていると仮定しています。

- (NSInteger)accessibilityElementCount { 
    return self.subviews.count; 
} 

- (id)accessibilityElementAtIndex:(NSInteger)index { 
    // Not that self should have a tag<0 or tag>count otherwise it will 
    // return itself for that tag instead of the element you want it to. 
    return [self viewWithTag:index]; 
} 

- (NSInteger)indexOfAccessibilityElement:(id)element { 
    return ((UIView *)element).tag; 
} 
関連する問題