iOS盲人模式小结

来源:互联网 发布:移动4g网络频段 编辑:程序博客网 时间:2024/05/02 01:25

打开盲人模式

系统:10.0.1,手机型号:iphone5
流程如下:
flo

关闭盲人模式

  1. 如果屏幕没有黑屏,直接关闭switch按钮就可以.
  2. 黑屏状态.三个手指同时触碰屏幕,注意是同时哦,连续点击屏幕三下。如果无效可以试试按三下home键。注意一定在语音提示手机解锁的状态操作。这个步骤之后手机屏幕亮起。

盲人模式使用经验

描述元素相关

  • accessibilityLabel 用来描述控件是什么.UIButton和lable会默认从title和text中获取,textField从输入框的内容获取..当元素获得焦点时会第一个播放.

  • accessibilityTraits 元素的特征.如按钮,链接等.元素获取焦点后会在第二个播放.由于会播放按钮等,因此accessibilityLabel可以不同添加链接的描述,直接使用系统描述的特征,如:lable为登陆,traint为按钮,系统会播放”登陆->按钮”.

  • accessibilityHint 用来描述一个动作.如下载链接,购买商品等.第三个朗读,默认为nil

  • accessibilityFrame 元素的frame.当元素过小时可以通过设置该frame使得容易点击,这个不会改变app的UI.如果不想让系统读取到该元素,可以设置frame为CGRectZero,效果等同于设计lable,hint为”“,traints为none.

  • accessibilityValue 元素的值.用在UISlider,UITextField等组件上.用来描述元素的值

  • isAccessibilityElement 设置是否支持盲人模式
    isAccessibilityElement默认是false,UIKit默认打开,但是UIImageView需要单独打开.

  • accessibilityElementHidden 不在读取该元素.isAccessbilityElement为NO只读取label,accessibilityElementHidden设为yes后lable也不再读取.

相关事件

Actions

  • Activate 单指轻点两次. 表示激活控件,如按钮点击

  • Escape. 单指 Z-shaped 手势一般用于退出模态界面或者返回导航的上一页界面

  • Magic Tap. 双指轻点两次触发 most-intended action.

  • Three-Finger Scroll. 触发水平滚动,如UIScrollView

  • Increment. 单指向上滑动,需要设置accessibilityTraits为UIAccessibilityTraitAdjustable,否则对应的方法不会被调用

  • Decrement. 单指向下滑动,需要设置accessibilityTraits为UIAccessibilityTraitAdjustable,否则对应的方法不会被调用

主动设置

  • 设置焦点元素
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, element)

直接读出一段文字

UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"read me");

是否开启了盲人模式

UIAccessibilityIsVoiceOverRunning()

监听盲人模式状态改变

通知名称为:UIAccessibilityVoiceOverStatusChanged

自定义绘制

  • 如果view的元素是绘制上去的,可以实现这种代理方法
    可以使用返回
- (NSArray *)accessibilityElements {    if (_array != nil) {        return _array;    }    _array = [NSMutableArray array];    UIAccessibilityElement *ele = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self];    ele.accessibilityFrame = CGRectMake(CGRectGetMinX(self.frame), CGRectGetMinY(self.frame), CGRectGetWidth(self.frame)/2.0, CGRectGetHeight(self.frame));    ele.accessibilityLabel = @"内容1";    [_array addObject:ele];    UIAccessibilityElement *ele2 = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self];    ele2.accessibilityFrame =  CGRectMake(CGRectGetMaxX(ele.accessibilityFrame), CGRectGetMinY(self.frame), CGRectGetWidth(self.frame)/2.0, CGRectGetHeight(self.frame));    ele2.accessibilityLabel = @"内容2";    [_array addObject:ele2];    return _array;}- (NSArray *)accessibilityElements {    return self.array;}- (BOOL)isAccessibilityElement {    return NO;}- (NSInteger)accessibilityElementCount {    return self.array.count;}- (id)accessibilityElementAtIndex:(NSInteger)index {    return [self.array objectAtIndex:index];}

关于webView

webView不需要单独设置,开启后系统会自动设置,无法读取的内容需要改成lable等标签

参考文档

苹果文档
打开盲人模式

0 0
原创粉丝点击