iOS键盘、VoiceOver和accessibilityViewIsModal

4

我试图为VoiceOver用户制作一个inputAccessoryView和键盘模态,以便他们不会迷失。设置如下:

view.accessibilityViewIsModal = YES;
textField.inputAccessoryView = view;

使键盘可见但不可用 - 它在模态视图之外。

接下来,在键盘出现后,我尝试了以下方法:

textField.inputAccessoryView.superview.accessibilityViewIsModal = YES;

这似乎有些超出范围,但几乎起作用了 - 但是在B之后的键(N、M空格等)无法导航。

接下来是这个:

textField.inputAccessoryView.superview.superview.accessibilityViewIsModal = YES;

一切都工作得很好。顺便说一下,那个视图的日志如下:

<UITextEffectsWindow: 0x17170290; frame = (0 0; 320 568); opaque = NO; gestureRecognizers = <NSArray: 0x17170710>; layer = <UIWindowLayer: 0x17170430>>

我的问题是:这样做是愚蠢的吗?看起来是的。这是合法的吗?UITextEffectsWindow是私有的,但我实际上并没有使用它,只是利用了它是一个视图的事实。
任何建议或解决问题的方法都会有所帮助。

你为什么要这样做? accessibilityViewIsModal 只会阻止同级视图获取焦点。你想做什么? - David Rönnqvist
1个回答

0

这不是非法的,但可以安全地假设它将在未来的iOS版本中停止工作。

例如,在iOS 6中,开发人员可以通过调用self.superview从单元格到其tableview。在iOS 7中,现在有一个私有类视图在其中。

您可能希望采取更动态的方法,比如遍历视图层次结构,直到找到具有正确框架或所有所需视图作为其子视图的视图。类似的UITableViewCell问题的方法可以在此处找到


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接