在uitableview中将画外音的焦点设置在特定的表格单元格上(UIAccessibility)

Gin*_*nny 12 iphone accessibility uitableview voiceover

我有一个UITableView,只要用户向其添加另一个元素/表格单元格,我就会滚动到底部.对于屏幕,这可以正常工作,因为用户可以看到他们刚刚在表格底部添加的单元格.但是当使用VoiceOver运行我的应用程序时,第一个聚焦和读取的UITableCell是屏幕上可见的顶部单元格.

我想设置它,以便聚焦然后在UITableView出现时立即读取的单元格是表格中的最后一个单元格.我该怎么做呢?看起来它很简单,但我无法弄明白.

这是我到目前为止所尝试的(在cellForRowAtIndexPath中):

if (cellJustAdded && indexPath.row == [array count]-1) {
    cell.accessibilityElementIsFocused = YES; //obviously this does not work
}
Run Code Online (Sandbox Code Playgroud)

但我不认为你可以像这样使用accessibilityElementIsFocused.

Dav*_*ist 9

当您希望VoiceOver选择某个元素时,您可以使用发布辅助功能通知UIAccessibilityPostNotification( ... );.

根据它是主要(完整屏幕)更改还是次要(仅限布局)更改,您应该发布

  • UIAccessibilityScreenChangedNotification (完全改变)
  • UIAccessibilityLayoutChangedNotification (小变化)

在这两种情况下,可选参数是VoiceOver应移动到的元素.

因此,在将新单元格添加到表格视图后,您可以调用

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,
                                yourNewCellThatShouldHaveFocus); 
Run Code Online (Sandbox Code Playgroud)

  • 这种方式在多个地方似乎对我不起作用。任何猜测可能是什么原因? (2认同)