我有一个UITableView,只要用户向其添加另一个元素/表格单元格,我就会滚动到底部 . 对于屏幕,这可以正常工作,因为用户可以看到他们刚刚在表格底部添加的单元格 . 但是当使用VoiceOver运行我的应用程序时,第一个聚焦和读取的UITableCell是屏幕上可见的顶部单元格 .
我想设置它,以便聚焦然后在UITableView出现时立即读取的单元格是表格中的最后一个单元格 . 我该怎么做呢?看起来它很简单,但我无法弄明白 .
这是我到目前为止所尝试的(在cellForRowAtIndexPath中):
if (cellJustAdded && indexPath.row == [array count]-1) {
cell.accessibilityElementIsFocused = YES; //obviously this does not work
}
但我不认为你可以像这样使用accessibilityElementIsFocused .
1 回答
当您希望VoiceOver选择某个元素时,您可以使用
UIAccessibilityPostNotification( ... );
发布辅助功能通知 .根据它是主要(完整屏幕)更改还是次要(仅限布局)更改,您应该发布
UIAccessibilityScreenChangedNotification
(完整更改)UIAccessibilityLayoutChangedNotification
(小变化)在这两种情况下,可选参数是VoiceOver应移动到的元素 .
因此,在将新单元格添加到表格视图后,您可以调用