IOS辅助功能选择的标记不移动
Posted
技术标签:
【中文标题】IOS辅助功能选择的标记不移动【英文标题】:IOS Accessibility selected marker not moving 【发布时间】:2019-02-05 11:50:17 【问题描述】:我们设置了不可见的 UIView,并将其标记为可用于 ios 画外音。滑动将轮廓标记从一个视图移动到另一个视图,但如果我们使用 SetFrame 移动视图的位置,并且它是当前为 Voiceover 选择的视图,它不会随之移动框架。如果我们然后触摸或拖动到同一个视图上,它就会选择新的位置。
任何想法如何以编程方式移动大纲?
这是我们的粗略代码
我们在屏幕上维护一系列区域和文本,这些区域和文本需要成为可访问视图,并在这些区域上创建和更新不可见视图。
// 如果我们检测到需要新视图
LocalAccBounds[i].view= [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 64, 64)] retain];
LocalAccBounds[i].view.backgroundColor=[UIColor clearColor];
LocalAccBounds[i].view.isAccessibilityElement = true;
LocalAccBounds[i].view.userInteractionEnabled = false;
LocalAccBounds[i].view.accessibilityLabel = [NSString stringWithCString:LocalAccBounds[i].txt encoding:NSUTF8StringEncoding];
UIViewController * lVC = [[[UIApplication sharedApplication] keyWindow] rootViewController];
[lVC.view addSubview:LocalAccBounds[i].view];
// 如果我们检测到现有视图已移动
[LocalAccBounds[i].view setFrame:CGRectMake(LocalAccBounds[i].x1*xsc,LocalAccBounds[i].y1*ysc, LocalAccBounds[i].x2*xsc-LocalAccBounds[i].x1*xsc, LocalAccBounds[i].y2*ysc-LocalAccBounds[i].y1*ysc-0)];
// 如果我们检测到不再需要现有视图
[LocalAccBounds[i].view removeFromSuperview];
[LocalAccBounds[i].view release];
LocalAccBounds[i].view=0;
当我们移动现有视图时,例如我们向左或向右滚动它们,它不会随视图移动轮廓。有时大约一秒钟后,轮廓标记会移动到一个或其他现有轮廓,但不一定是最后一次触摸的位置。
谢谢
肖恩
【问题讨论】:
【参考方案1】:我不太了解您的用例,但根据您帖子中写的内容,我建议:
使用accessibilityFrameInContainerSpace
属性创建可访问性视图。
查看UIAccessibilityFocus
非正式协议,了解可访问的元素焦点。
根据我对您的问题的模糊理解,这两条线索应该可以帮助您达到目的。
【讨论】:
以上是关于IOS辅助功能选择的标记不移动的主要内容,如果未能解决你的问题,请参考以下文章