OC-accessibility

label→value(可选)→traits→hint 读取顺序

NSAccessibilityAnnouncementKey

//组成一个Announcement 这个Announcement的内容就是string 而NSAccessibilityAnnouncementKey作为key就表示这个string是一个Announcement 整个data可以看作useInfo
NSDictionary * data = [NSDictionary dictionaryWithObject: string for key : NSAccessibilityAnnouncementKey];
NSAccessibilityPostNotificationWithUserInfo([[NSApplication shareApplication] keyWindow],NSAccessibilityAnnouncementRequestedNotification,data);

目前已知想要读出来就需要app是active的 然后window需要是keyWindow 然后NSAccessibilityPostNotificationWithUserInfo的第一个参数必须是firstResponder对象

NSAccessibilityPriorityKey

优先级,表示这个string被读取的优先级

NSDictionary *announcementInfo = @{NSAccessibilityAnnouncementKey : string,
								   NSAccessibilityPriorityKey : @(NSAccessibilityPriorityHigh)};

NSAccessilityPriorityLevel

NSAccessibilityPriorityHigh
NSAccessibilityPriorityMedium
NSAccessibilityPriorityLow

NSAccessibilityNotificationName

里面有一堆Notification 主要通过调用NSAccessibilityPostNotification发送Notification给assistive app 告诉他哪些东西发生了改变
正常来说这些信息都是会被自动发送的

NSAccessibilityAnnouncementRequestedNotification

表示发送的这个notification里面含有AnnouncementRequested的

custom controls

如果要自定义一些自己的element 一般是继承 NSView, NSWindow, NSCell, and NSDrawer,这些element里面已经写了一些关于NSAccessibility protocol 可以直接用,如果不继承这些那就要继承NSAccessibilityElement

accessibility操作

VO键:中/英 或者 control + option

VO + Right/Left

tab能选中的都是能接受键盘消息的view 因为可以成为firstResponder和处理key event 的view通常会进入key view loop of a window 而key-view loop允许用户通过tab/shit + tab来在可以进入key-view loop 的view之间进行选择,而想让一个view进入key-view loop最常用的是在Interface builder中connecting a view to another view’s “nextKeyView” outlet.

关于accessibility里面的firstResponder 和focuse

accessibility focuse的就是黑框框 框住的 一般没有特殊设置是在window显示的时候找到firstResponder来focuse
如果window不设置firstResponder 则是从左到右着第一个能firstResponder的来focuse
但是如果你设置了firstResponder 并且你设置的init这个并不接受firstResponder
在这里插入图片描述
那么他就会从左上角开始找第一个可以focuse的 图中是第一个textFile 但是如果textFile放到后面去了 那就是 我是一个label

next key view/key view loop

会有一个key view loop 循环 主要是从window的firstResponder开始 然后此时按下tab 就会focus当前view属性里的next key view 进行一个循环 记住 一定要设置window的firstResponder 如果不设置 你自行设置的next key view会不启用 并且你设置的next key view也只局限于acceptFirstResponder 如果这个view不能接受 则会被跳过
但是可以通过override这个不能成为firstResponder的view的 acceptFirstResponder{ return YES; };方法 就可以focuse了
并且如果有NSView发生变化(消失或者新增)都需要手动调用recalculateKeyViewLoop来重新计算key view loop

voiceOver能聚焦到的

一定是可访问性的东西

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值