iOS辅助功能选择的标记未移动

时间:2019-02-05 11:50:18

标签: ios accessibility voiceover

我们已设置了不可见的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 个答案:

答案 0 :(得分:0)

我不太了解您的用例,但是根据您的帖子中的内容,我建议:

根据我对您的问题的含糊理解,这两条线索应该可以帮助您实现目标。