gpt4 book ai didi

ios - 打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:18 25 4
gpt4 key购买 nike

我正在自定义 UITableViewCell 类中实现辅助功能。我有一个相当简单的溢出菜单,里面有几个按钮,这些按钮是隐藏的,直到按下一个省略号按钮滑动打开并关闭溢出。

在我的单元格初始化程序中,我将 overflowContaineraccessibilityElementsHidden 设置为 YES。这似乎有效,当使用 VoiceOver 滚动浏览时,这些 View 将被跳过。

然后,当打开单元格时,在 UIView 动画的完成处理程序中,我将同一 overflowContainer 的相同 accessibilityElementsHidden 设置为不。这似乎没有任何效果,那些元素仍然被跳过。

我也尝试过在更改 accessibilityElementsHidden BOOL 之前/之后/之后发布 UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil),但这也会出现对情况没有影响。

基本上,我想在特定点对几个 UIView 实例切换 accessibilityElementsHidden。谁能告诉我我可能做错了什么?

这是我在溢出打开时触发的代码:

- (void)cellOverflowDidShow:(MyCell *)cell
{
self.overflowContainer.isAccessibilityElement = YES;
self.firstButton.isAccessibilityElement = YES;
self.secondButton.isAccessibilityElement = YES;
self.thirdButton.isAccessibilityElement = YES;
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self.firstButton);
}

我在关闭单元格时触发相反的操作(将所有设置为 NO 并再次发布通知)。在初始化单元格时,我设置的是:

self.overflowContainer.isAccessibilityElement = NO;

完全不知道为什么它不应该工作,看来我做的一切都是 100% 正确的。如果我不在初始化程序中设置该行,按钮将全部显示为可访问(始终)。因此,第一个调用(无论是 YES 还是 NO)似乎都有效,但任何后续调用都将被忽略。

最佳答案

在可见状态下,您将溢出容器声明为可访问性元素。因此,VoiceOver 将允许用户聚焦它而不是导航子元素。不要切换它是否是辅助功能元素,而是将 self.overflowContainer.isAccessibilityElement 设置为 NO 并切换其子元素 firstButton、secondButton 和 thirdButton 的辅助功能。

设置子元素可访问性的简写是accessibilityElementsHidden。尝试在 View 出现时将 self.overflowContainer.accessibilityElementsHidden 设置为 NO,在 View 消失时将其设置为 YES

无论如何,您可能仍然需要触发布局更改通知。

关于ios - 打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259822/

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