AccessibilityRotorEntry


アクセシビリティローター内のエントリを表す構造体。



iOS 15.0+ iPadOS 15.0+ macOS 12.0+ Mac Catalyst 15.0+

tvOS 15.0+ watchOS 8.0+ visionOS 1.0+   Beta  

struct AccessibilityRotorEntry<ID> where ID : Hashable





概観


アクセシビリティローターは、ユーザがユーザインターフェイスの特定の要素にすばやくナビゲートしたり、必要に応じてそれらの要素内の特定の範囲のテキストにナビゲートできるようにするショートカットです。


ローター内のエントリには、ユーザに対してエントリを識別するためのラベル、ローターエントリがどのアクセシビリティー要素にナビゲートするかを決定するために使用される識別子(ID)、および関連するアクセシビリティ要素のテキスト内の特定の位置にナビゲートするエントリーに使用されるオプションの範囲が含まれる場合があります。エントリはまた、アクセシビリティ要素をスクリーン上に表示するために必要な手動作業を行うために、エントリにナビゲートする前に呼び出されるハンドラを指定することもできます。


以下の例では、メッセージアプリケーションがローターを作成し、ユーザが特に VIP から発信されたメッセージにナビゲートできるようにします。


  1. // `messages` is a list of `Identifiable` `Message`s.
  2. ScrollView {
  3. LazyVStack {
  4. ForEach(messages) { message in
  5. MessageView(message)
  6. }
  7. }
  8. }
  9. .accessibilityElement(children: .contain)
  10. .accessibilityRotor("VIPs") {
  11. // Not all the `MessageView`s are generated at once, but the model
  12. // knows about all the messages.
  13. ForEach(messages) { message in
  14. // If the Message is from a VIP, make a Rotor entry for it.
  15. if message.isVIP {
  16. AccessibilityRotorEntry(message.subject, id: message.id)
  17. }
  18. }
  19. }


ForEach 繰り返し内に複数の Accessibility 要素がある場合、または ScrollView が存在しない状況では、optional の名前空間を使用してエントリを作成することもできます。この場合、ScrollViewReader を使用して要素を所定の位置にスクロールするには、prepare クロージャが必要になります。同じ名前空間を accessibilityRotorEntry(id:in:) の呼び出しに渡して、このエントリに関連した Accessibility 要素にタグを付ける必要があります。


以下の例では、メッセージアプリケーションがローターを作成し、ユーザが特に VIP から発信されたメッセージにナビゲートできるようにします。ローターエントリは、メッセージのコンテンツテキストに関連していますが、これは、Accessibility 要素を生成する ForEach 内の 2 つのビューの 1 つです。そのビューには、AccessibilityRotorEntry(id:in:) のタグが付けられているため、AccessibilityRotorEntry で見つける事ができ、ScrollViewReaderprepare クロージャとともに使用されて、ビューを所定の位置にスクロールします。


  1. struct MessageListView: View {
  2. @Namespace var namespace
  3. var body: some View {
  4. ScrollViewReader { scroller in
  5. ScrollView {
  6. LazyVStack {
  7. ForEach(allMessages) { message in
  8. VStack {
  9. Text(message.subject)
  10. // Tag this `Text` as an element associated
  11. // with a Rotor entry.
  12. Text(message.content)
  13. .accessibilityRotorEntry(
  14. "\(message.id)_content",
  15. in: namespace
  16. )
  17. }
  18. }
  19. }
  20. }
  21. .accessibilityElement(children: .contain)
  22. .accessibilityRotor("VIP Messages") {
  23. ForEach(vipMessages) { vipMessage in
  24. // The Rotor entry points to a specific ID we
  25. // defined within a given `ForEach` iteration,
  26. // not to the entire `ForEach` iteration.
  27. AccessibilityRotorEntry(vipMessage.subject,
  28. id: "\(vipMessage.id)_content", in: namespace)
  29. {
  30. // But the ID we give to `ScrollViewReader`
  31. // matches the one used in the `ForEach`, which
  32. // is the identifier for the whole iteration
  33. // and what `ScrollViewReader` requires.
  34. scroller.scrollTo(vipMessage.id)
  35. }
  36. }
  37. }
  38. }
  39. }
  40. }





トピックス


ローターエントリの作成


init(LocalizedStringKey, textRange: Range<String.Index>, prepare: (() -> Void))

特定のラベルと範囲で Rotor エントリを作成します。この Rotor エントリは、Rotor を所有する Accessibility 要素に関連しています。


init<L>(L, textRange: Range<String.Index>, prepare: (() -> Void))

特定のラベルと範囲で Rotor エントリを作成します。この Rotor エントリは、Rotor を所有する Accessibility 要素に関連しています。


init(Text?, textRange: Range<String.Index>, prepare: (() -> Void))

特定のラベルと範囲で Rotor エントリを作成します。この Rotor エントリは、Rotor を所有する Accessibility 要素に関連しています。


識別子(ID)を使用したローターエントリの作成


init(LocalizedStringKey, id: ID, textRange: Range<String.Index>?, prepare: (() -> Void))

特定のラベルと識別子(ID)、および optional の範囲を使用して Rotor エントリを作成します。


init<L>(L, id: ID, textRange: Range<String.Index>?, prepare: (() -> Void))

特定のラベルと識別子(ID)、および optional の範囲を使用して Rotor エントリを作成します。


init(Text, id: ID, textRange: Range<String.Index>?, prepare: (() -> Void))

特定のラベルと識別子(ID)、および optional の範囲を使用して Rotor エントリを作成します。



名前空間内に識別されたローターエントリを作成


init(LocalizedStringKey, id: ID, in: Namespace.ID, textRange: Range&lSttring.Index>?, prepare: (() -> Void))

特定のラベル、識別子(ID)、名前空間、および optional の範囲を使用して Rotor エントリを作成します。


init<L>(L, ID, in: Namespace.ID, textRange: Range<String.Index>?, prepare: (() -> Void))

特定のラベル、識別子(ID)、名前空間、および optional の範囲を使用して Rotor エントリを作成します。


init(Text, id: ID, in: Namespace.ID, textRange: Range<String.Index>?, prepare: (() -> Void))

特定のラベル、識別子(ID)、名前空間、および optional の範囲を使用して Rotor エントリを作成します。






関連


以下への準拠


AccessibilityRotorContent

IDHashable に準拠している場合に準拠します。






以下も見よ


ローターの作成


accessibilityRotor<Content>(LocalizedStringKey, entries: () -> Content) -> some View

指定されたユーザー可視ラベルとコンテンツクロージャから生成されたエントリを持つアクセシビリティローターを作成します。


accessibilityRotor<Content>(Text, entries: () -> Content) -> some View

指定されたユーザー可視ラベルとコンテンツクロージャから生成されたエントリを持つアクセシビリティローターを作成します。


accessibilityRotor<L, Content>(L, entries: () -> Content) -> some View

指定されたユーザー可視ラベルとコンテンツクロージャから生成されたエントリを持つアクセシビリティローターを作成します。


protocol AccessibilityRotorContent

アクセシビリティ ローター内のコンテンツ。

IDHashable に準拠している場合利用可能です。


struct AccessibilityRotorContentBuilder

ローターエントリーコンテンツの生成に使用する結果ビルダー。















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ