首页 文章

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

提问于
浏览
12

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

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

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

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

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

1 回答

  • 8

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

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

    • UIAccessibilityScreenChangedNotification (完整更改)

    • UIAccessibilityLayoutChangedNotification (小变化)

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

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

    UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,
                                    yourNewCellThatShouldHaveFocus);
    

相关问题