gpt4 book ai didi

ios - VoiceOver 和异步 UITableView

转载 作者:可可西里 更新时间:2023-11-01 02:03:43 26 4
gpt4 key购买 nike

在我的应用程序中,我有一个带有异步数据加载的 UITableView:加载 View Controller 时,我会显示一个模态事件微调器并启动 HTTP 请求。完成后,我隐藏微调器并在我的 TableView 上执行 reloadData()。我还返回 response?.count ?? 0 作为行数以确保列表在数据尚未准备好时最初为空。

它就像一个魅力,但我对 VoiceOver 有一个问题:打开 View Controller 时,VoiceOver 进入表格并说“空列表”。加载数据后,它会转到表的最后一个元素。

这种行为不是很理想:我希望 VoiceOver 在表格为空时不要聚焦表格(它不需要聚焦模态微调器,因为我们在加载时已经有声音)然后转到第一个元素它已加载。

我该怎么做?

最佳答案

您想将加载覆盖屏幕设置为模态视图。模态意味着 View 背后的内容不可操作(或无法通过 VoiceOver 聚焦)。

//Instantiate a view controller with your loading spinner.
_modalDialogViewController = [[UIStoryboard storyboardWithName:@"ModalDialog" bundle:[NSBundle mainBundle]]
instantiateViewControllerWithIdentifier:@"AccessibleSpinnerModal"];

//Make this view controller modal, meaning only things on this screen will be actionable/focusable.
_modalDialogViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;

您可能还需要以这些样式中的任何一种使用辅助功能通知。

//Announce that content is loading directly 
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, "Stuff is laoding");

或者

//Shift focus to the view in your modal that is sharing the status of the loading content.
UIAccessibilityPostNotification(UIAccessibilityLayoutChanged, spinnerView);

这将使焦点移动到该 View 。

关于ios - VoiceOver 和异步 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44694728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com