13

我有一个 UITableView,一旦用户向其中添加另一个元素/表格单元格,我就会滚动到底部。对于屏幕,这很好用,因为用户可以在表格底部看到他们刚刚添加的单元格。但是当使用 VoiceOver 运行我的应用程序时,第一个获得焦点和阅读的 UITableCell 是屏幕上可见的顶部单元格。

我想设置它,以便在此 UITableView 出现时获得焦点然后读取的单元格是表格中的最后一个单元格。我该怎么做呢?这似乎很简单,但我无法弄清楚。

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

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

但我认为您不能像那样使用accessibilityElementIsFocused。

4

1 回答 1

9

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

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

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

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

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

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,
                                yourNewCellThatShouldHaveFocus); 
于 2013-03-28T10:28:00.830 回答