macOS 上的辅助功能

本页介绍如何使用 macOS 辅助功能 API 根据辅助功能检查清单生成应用。 有关其他平台 API,请参阅 Android 辅助功能iOS 辅助功能页面。

若要了解辅助功能 API 在 macOS(以前称为 OS X)中的工作方式,请首先查看 OS X 辅助功能模型

描述 UI 元素

AppKit 使用 NSAccessibility 协议公开有助于使用户界面易于访问的 API。 这包括尝试为辅助功能属性设置有意义的值的默认行为,例如设置按钮的 AccessibilityLabel。 标签通常是描述控件或视图的某个词或短语。

情节提要文件

Xamarin.Mac 使用 Xcode Interface Builder 编辑情节提要文件。 当在设计界面上选择控件时,可以在标识检查器中编辑辅助功能信息(如下方的屏幕截图所示)

Adding accessibility in Xcode's Interface Builder

代码

Xamarin.Mac 当前不公开为 AccessibilityLabel 资源库。 添加以下帮助程序方法以设置辅助功能标签:

public static class AccessibilityHelper
{
    [System.Runtime.InteropServices.DllImport (ObjCRuntime.Constants.ObjectiveCLibrary)]
    extern static void objc_msgSend (IntPtr handle, IntPtr selector, IntPtr label);

    static public void SetAccessibilityLabel (this NSView view, string value)
    {
        objc_msgSend (view.Handle, new ObjCRuntime.Selector ("setAccessibilityLabel:").Handle, new NSString (value).Handle);
    }
}

然后,可以在代码中使用此方法,如下所示:

AccessibilityHelper.SetAccessibilityLabel (someButton, "New Accessible Description");

AccessibilityHelp 属性用于解释控件或视图的功能,并且仅当标签无法提供足够的信息时才应添加。 帮助文本仍应尽可能短,例如“删除文档”。

某些用户界面元素与辅助功能访问无关(例如,位于具有其自己的辅助功能标签和帮助的输入旁边的标签)。 在这些情况下,请设置 AccessibilityElement = false,以便屏幕阅读器或其他辅助功能工具跳过这些控件或视图。

Apple 提供了辅助功能指南,解释了辅助功能标签和帮助文本的最佳做法。

自定义控件

有关所需其他步骤的详细信息,请参阅 Apple 的可访问自定义控件的指南

测试辅助功能

macOS 提供可帮助测试辅助功能的辅助功能检查器。 此检查器包含在 Xcode 中。

首次启动时,辅助功能检查器将需要通过辅助功能控制计算机的权限:

Accessibility Inspector requesting permission to run

解锁设置屏幕(如果需要,位于左下角)并勾选“辅助功能检查器”

Settings screen to enable Accessibility Inspector

启用后,检查器将显示为可以在屏幕上移动的浮动窗口。 以下屏幕截图显示了在示例 Mac 应用程序旁边运行的检查器。 当光标移到窗口上时,检查器将显示每个控件的所有可访问属性:

Example of Accessibility Inspector running

有关详细信息,请阅读 OS X 测试辅助功能指南