我们已设置了不可见的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;
当我们移动现有视图时,例如我们向左或向右滚动它们,不会随视图移动轮廓。有时大约一秒钟后,轮廓标记会移动到现有轮廓中的一个或另一个上,而不一定是最后一次触摸的位置。
谢谢
肖恩
答案 0 :(得分:0)
我不太了解您的用例,但是根据您的帖子中的内容,我建议:
accessibilityFrameInContainerSpace
属性创建可访问性视图。UIAccessibilityFocus
非正式协议以关注可访问元素的焦点。根据我对您的问题的含糊理解,这两条线索应该可以帮助您实现目标。