打开盲人模式
系统:10.0.1,手机型号:iphone5
流程如下:
关闭盲人模式
- 如果屏幕没有黑屏,直接关闭switch按钮就可以.
- 黑屏状态.三个手指同时触碰屏幕,注意是同时哦,连续点击屏幕三下。如果无效可以试试按三下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等标签