这是我的代码:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return self.setupFriendsHeaderView()
}
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.accessibilityTraits = .none
for subView in view.subviews {
subView.accessibilityTraits = .none
}
}
func setupFriendsHeaderView() -> UIView? {
let view = UIView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: tableView.frame.width, height: 44)))
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.switchPendingRequestsStatus)))
view.isAccessibilityElement = true
view.accessibilityLabel = "Pending requests"
return view
}
第一次点击标题时,VoiceOver会说:“待处理请求。待处理请求标题。”有时,它无法完成第一句话,而开始讲第二句话。第二次它只是说“待处理请求标头”。我需要做的是只说一次“待处理的请求”,而不要说“标题”。
我看到了建议使用willDisplayHeaderView
方法的答案,但这根本没有帮助。
答案 0 :(得分:0)
如果您要使用VoiceOver显示带有节标题的表格视图而从不说“标题”,那就算了:那是死路一条currently当前没有没有解决方案来完成这种表格视图设计
达到技术目的的最佳方法是创建一个表视图,该表的节标题是具有不同外观的单个单元格。⟹我指定了“技术性”,因为从功能上讲,这既不合适也不可行recommended(适用于VoiceOver用户)。
实际上,节标题是重要的标记,不仅限定特定信息块,而且还允许 借助转子,可以非常快地从一个区域移动到另一个区域。
我想您的目的可能纯粹是视觉上的,因为从功能上来说,它未经任何可访问性专家或VoiceOver用户的批准。
就像您所做的那样,我花了很多时间尝试找到针对该“问题”的技术解决方案,但是即使我找到了它(不幸的是我没有找到),我也永远不会肯定已经实现了。
答案 1 :(得分:0)
我遇到了带有自定义UILabel的自定义UITableViewHeaderFooterView
的问题。我发现将headerfooterview的accessibilityLabel
设置为此自定义标签的文本可以解决此问题。