다음을 통해 공유


Xamarin.Forms의 자동화 속성

Xamarin.Forms를 사용하면 AutomationProperties 클래스에서 연결된 속성을 통해 액세스 가능성 값을 사용자 인터페이스 요소에 설정할 수 있으며 이어서 기본 액세스 가능성 값을 설정합니다. 이 문서에서는 화면 판독기에 페이지의 요소가 표시될 수 있도록 AutomationProperties 클래스를 사용하는 방법을 설명합니다.

Xamarin.Forms를 사용하면 자동화 속성을 다음과 같은 연결된 속성을 통해 사용자 인터페이스 요소에 설정할 수 있습니다.

  • AutomationProperties.IsInAccessibleTree – 요소를 액세스 가능한 애플리케이션에 사용할 수 있는지 나타냅니다. 자세한 내용은 AutomationProperties.IsInAccessibleTree를 참조하세요.
  • AutomationProperties.Name – 요소에 대해 speakable 식별자로 사용되는 요소에 대한 간단한 설명입니다. 자세한 내용은 AutomationProperties.Name을 참조하세요.
  • AutomationProperties.HelpText – 요소와 연결된 도구 설명 텍스트로 간주될 수 있는 요소에 대한 긴 설명입니다. 자세한 내용은 AutomationProperties.HelpText를 참조하세요.
  • AutomationProperties.LabeledBy – 다른 요소가 현재 요소에 대한 액세스 가능성 정보를 정의하게 할 수 있습니다. 자세한 내용은 AutomationProperties.LabeledBy를 참조하세요.

이러한 연결 속성은 화면 판독기에 요소가 표시될 수 있도록 기본 액세스 가능성 값을 설정합니다. 연결된 속성에 대한 자세한 내용은 연결된 속성를 참조하세요.

Important

AutomationProperties 연결된 속성을 사용하면 Android에서 UI 테스트 실행에 영향을 줄 수 있습니다. AutomationId, AutomationProperties.NameAutomationProperties.HelpText 속성은 AutomationId값보다 AutomationProperties.NameAutomationProperties.HelpText 속성 값을 우선 지정하여 기본 ContentDescription 속성을 설정합니다(AutomationProperties.NameAutomationProperties.HelpText 모두가 설정된 경우 값이 연결됩니다). 즉, AutomationProperties.Name 또는 AutomationProperties.HelpText가 요소에 설정된 경우 AutomationId를 검색하는 모든 테스트가 실패합니다. 이 시나리오에서 AutomationProperties.Name 또는 AutomationProperties.HelpText의 값 또는 둘 다의 연결을 검색하기 위해 UI 테스트를 변경해야 합니다.

각 플랫폼에는 액세스 가능성 값을 설명하는 다른 화면 판독기가 있습니다.

그러나 화면 판독기의 정확한 동작은 소프트웨어 및 사용자의 소프트웨어 구성에 따라 달라집니다. 예를 들어 대부분의 화면 판독기는 포커스를 받을 때 컨트롤과 연결된 텍스트를 읽고, 페이지에서 컨트롤 사이를 이동하는 경우 사용자가 스스로 방향을 지정하게 할 수 있습니다. 일부 화면 판독기에는 페이지가 나타나면 사용자가 이동하기 전에 페이지의 사용 가능한 모든 정보 콘텐츠를 받을 수 있도록 설정되는 전체 애플리케이션 사용자 인터페이스가 표시됩니다.

화면 판독기는 다양한 액세스 가능성 값도 읽을 수 있습니다. 샘플 애플리케이션에서

  • VoiceOver는 컨트롤을 사용하는 지침에 따라 EntryPlaceholder 값을 읽습니다.
  • TalkBack은 컨트롤을 사용하는 지침에 따라 EntryPlaceholder 값에 이어 AutomationProperties.HelpText 값을 읽습니다.
  • Narrator는 컨트롤을 사용하는 지침에 따라 EntryAutomationProperties.LabeledBy 값을 읽습니다.

또한 Narrator는 AutomationProperties.Name, AutomationProperties.LabeledBy, AutomationProperties.HelpText의 차례로 우선 순위를 지정합니다. Android에서 TalkBack은 AutomationProperties.Name 값 및 AutomationProperties.HelpText 값을 결합할 수 있습니다. 따라서 최적의 환경을 제공하도록 각 플랫폼에서 액세스 가능성에 대한 철저한 테스트를 수행하는 것이 좋습니다.

AutomationProperties.IsInAccessibleTree

AutomationProperties.IsInAccessibleTree 연결된 속성은 요소가 화면 판독기에 액세스할 수 있으므로 화면 판독기에 표시되는지 확인하는 boolean입니다. 해당 속성은 다른 액세스 가능성 연결 속성을 사용하는 true로 설정되어야 합니다. 이렇게 하면 다음과 같이 XAML로 수행할 수 있습니다.

<Entry AutomationProperties.IsInAccessibleTree="true" />

또는 다음과 같이 C#에서 설정할 수 있습니다.

var entry = new Entry();
AutomationProperties.SetIsInAccessibleTree(entry, true);

참고 항목

SetValue 메서드는 AutomationProperties.IsInAccessibleTree 연결된 속성을 설정하는 데 사용할 수도 있습니다 - entry.SetValue(AutomationProperties.IsInAccessibleTreeProperty, true);

AutomationProperties.Name

AutomationProperties.Name 연결된 속성 값은 화면 판독기가 요소를 발표하는 데 사용하는 설명이 포함된 짧은 텍스트 문자열이어야 합니다. 콘텐츠를 이해하거나 사용자 인터페이스와 상호 작용하는 데 중요한 의미가 있는 요소에 대해 이 속성을 설정해야 합니다. 이렇게 하면 다음과 같이 XAML로 수행할 수 있습니다.

<ActivityIndicator AutomationProperties.IsInAccessibleTree="true"
                   AutomationProperties.Name="Progress indicator" />

또는 다음과 같이 C#에서 설정할 수 있습니다.

var activityIndicator = new ActivityIndicator();
AutomationProperties.SetIsInAccessibleTree(activityIndicator, true);
AutomationProperties.SetName(activityIndicator, "Progress indicator");

참고 항목

SetValue 메서드는 AutomationProperties.Name 연결된 속성을 설정하는 데 사용할 수도 있습니다 - activityIndicator.SetValue(AutomationProperties.NameProperty, "Progress indicator");

AutomationProperties.HelpText

AutomationProperties.HelpText 연결된 속성을 사용자 인터페이스 요소를 설명하는 텍스트로 설정해야 하며, 요소와 연결된 도구 설명 텍스트로 간주할 수 있습니다. 이렇게 하면 다음과 같이 XAML로 수행할 수 있습니다.

<Button Text="Toggle ActivityIndicator"
        AutomationProperties.IsInAccessibleTree="true"
        AutomationProperties.HelpText="Tap to toggle the activity indicator" />

또는 다음과 같이 C#에서 설정할 수 있습니다.

var button = new Button { Text = "Toggle ActivityIndicator" };
AutomationProperties.SetIsInAccessibleTree(button, true);
AutomationProperties.SetHelpText(button, "Tap to toggle the activity indicator");

참고 항목

SetValue 메서드는 AutomationProperties.HelpText 연결된 속성을 설정하는 데 사용할 수도 있습니다 - button.SetValue(AutomationProperties.HelpTextProperty, "Tap to toggle the activity indicator");

일부 플랫폼에서는 Entry과 같은 편집 컨트롤을 위해 HelpText 속성을 경우에 따라 생략하고 자리 표시자 텍스트로 바꿀 수 있습니다. 예를 들어 "여기에 이름 입력"은 사용자가 실제로 입력하기 전에 컨트롤에 텍스트를 배치하는 Entry.Placeholder 속성의 좋은 후보입니다.

AutomationProperties.LabeledBy

AutomationProperties.LabeledBy 연결된 속성은 다른 요소가 현재 요소에 대한 액세스 가능성 정보를 정의하게 할 수 있습니다. 예를 들어 Entry 옆에 있는 LabelEntry가 나타내는 것을 설명하는 데 사용할 수 있습니다. 이렇게 하면 다음과 같이 XAML로 수행할 수 있습니다.

<Label x:Name="label" Text="Enter your name: " />
<Entry AutomationProperties.IsInAccessibleTree="true"
       AutomationProperties.LabeledBy="{x:Reference label}" />

또는 다음과 같이 C#에서 설정할 수 있습니다.

var nameLabel = new Label { Text = "Enter your name: " };
var entry = new Entry();
AutomationProperties.SetIsInAccessibleTree(entry, true);
AutomationProperties.SetLabeledBy(entry, nameLabel);

Important

AutomationProperties.LabeledByProperty는 아직 iOS에서 지원되지 않습니다.

참고 항목

SetValue 메서드는 AutomationProperties.IsInAccessibleTree 연결된 속성을 설정하는 데 사용할 수도 있습니다 - entry.SetValue(AutomationProperties.LabeledByProperty, nameLabel);

내게 필요한 옵션 복잡성

다음 섹션에서는 특정 컨트롤에서 내게 필요한 옵션 값을 설정하는 복잡성을 설명합니다.

Android에서 텍스트를 설정하기 위해 해당 화면 판독기는 NavigationPage의 작업 표시줄에서 뒤로 가기 화살표에 대해 읽고, Page에서 AutomationProperties.NameAutomationProperties.HelpText 속성을 설정합니다. 하지만 이 작업은 OS 뒤로 가기 단추에 영향을 주지 않습니다.

FlyoutPage

iOS 및 UWP(유니버설 Windows 플랫폼)에서 텍스트를 설정하기 위해 해당 화면 판독기는 FlyoutPage에서 토글 단추에 대해 읽고, AutomationProperties.NameFlyoutPageAutomationProperties.HelpText 속성 또는 Flyout 페이지의 IconImageSource 속성을 설정합니다.

Android에서 텍스트를 설정하기 위해 해당 화면 판독기는 FlyoutPage에서 토글 단추에 대해 읽고, 문자열 리소스를 Android 프로젝트에 추가합니다.

<resources>
    <string name="app_name">Xamarin Forms Control Gallery</string>
    <string name="btnMDPAutomationID_open">Open Side Menu message</string>
    <string name="btnMDPAutomationID_close">Close Side Menu message</string>
</resources>

그런 다음, Flyout 페이지에서 IconImageSource 속성의 AutomationId 속성을 적절한 문자열로 설정합니다.

var flyout = new ContentPage { ... };
flyout.IconImageSource.AutomationId = "btnMDPAutomationID";

ToolbarItem

iOS, Android 및 UWP에서 화면 판독기는 ToolbarItem 인스턴스의 Text 속성 값을 읽지만, AutomationProperties.Name 또는 AutomationProperties.HelpText 값이 정의되지 않습니다.

iOS 및 UWP에서 AutomationProperties.Name 속성 값은 화면 판독기에서 읽은 Text 속성 값을 대체합니다.

Android에서 AutomationProperties.Name 및/또는 AutomationProperties.HelpText 속성 값은 화면 판독기에서 표시되고 읽힌 Text 속성 값을 대체합니다. API를 26개 미만으로 제한합니다.