macOS 上的辅助功能

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

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

描述 UI 元素

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

情节提要文件

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

在 Xcode 的接口生成器中添加辅助功能

代码

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

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 中。

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

辅助功能检查器请求权限以运行

如果需要,请在左下角) 解锁设置屏幕 (,然后勾选 辅助功能检查器

用于启用辅助功能检查器的“设置”

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

运行辅助功能检查器的示例

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