9

Apple 的 Accessibility Inspector 工具显示与当前检查的 UI 元素对应的 Objective-C 类。请参阅NSButtonCell此屏幕截图的最底部:

辅助功能检查器屏幕截图

但是,如何在自己的代码中提取这些信息?Apple 七年前的UIElementInspector示例代码中的可访问性方法没有显示元素的类名。

对 Accessibility Inspector 进行逆向工程暗示可以通过AXClassName属性获得 Objective-C 类名,但该属性对我来说始终为零。

4

1 回答 1

7

AXClassNameAppKit 将对该属性和其他几个属性的访问限制为具有com.apple.private.accessibility.inspection权利的应用程序。Accessibility Inspector 用于访问可访问性信息的 XPC 服务具有此权利。由于这是一项私人权利,我相信它只能添加到由 Apple 证书签名的应用程序中。

您可以通过像这样从 Accessibility Inspector 的 XPC 服务中剥离权利来确认权利是关键(首先备份 Accessibility Inspector!):

codesign -f -s - /Applications/Xcode.app/Contents/Applications/Accessibility\ Inspector.app/Contents/Frameworks/AccessibilityAuditDeviceManager.framework/XPCServices/axAuditService.xpc

如果您随后打开 Accessibility Inspector,您将看到大多数功能都可以正常工作,除了私有权利上的类名之类的东西。

具有授权 XPC 服务的 Accessibility Inspector

具有未授权 XPC 服务的 Accessibility Inspector

于 2017-08-09T20:10:21.720 回答