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

2024-01-08

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

在我的单元格的初始化程序中,我设置accessibilityElementsHidden of my overflowContainer to YES。这似乎有效,当使用 VoiceOver 滚动时,这些视图将被跳过。

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

我也尝试过发帖UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)更改之前/之后/时accessibilityElementsHidden BOOL,但这似乎也对局势没有影响。

基本上我想切换accessibilityElementsHidden在几个UIView特定点的实例。谁能让我知道我可能做错了什么?

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

- (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 or NO,有效,但任何后续的都会被忽略。


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

设置子元素可访问性的简写是accessibilityElementsHidden。尝试设置self.overflowContainer.accessibilityElementsHidden to NO当视图出现并且YES当它消失时。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素 的相关文章

随机推荐

  • 如何将已写入 xml 文件的 OpenCV Mat 转换回图像?

    我编写了一些代码来生成一个 xml 文件 其中包含来自 OpenCV 中的 Mat 文件的 RGB 数据 我想根据 xml 文件中的数据点在 MATLAB 中重新创建此图像 然而 我不确定 xml 文件的格式 因为当我打开它时 它看起来像这
  • Java(Android):如何在没有位图的情况下缩放可绘制对象?

    我需要缩放按钮的背景图像 但无法将其转换为位图 这是现在的代码 int height 50 int width 80 Button b new Button this b setBackgroundResource R drawable b
  • 即使负载因子限制没有被打破,为什么 std::unordered_set 也会被重新哈希?

    根据参考参数 http en cppreference com w cpp container unordered set emplace 仅当新元素数量大于时才会发生重新散列max load factor bucket count 此外
  • UIGestureRecognizer 通过 UIScrollView

    当可以水平滚动时 我需要用 3 个手指检测 UIScrollView 上的左右滑动 我需要用 1 根和 2 根手指保留所有交互 是否可以在不重写所有手势识别的情况下做到这一点 谢谢 这是可能的 向您的 UIScrollView 添加滑动手势
  • 如何在bash脚本中循环?

    我在 Linux 下的 bash 脚本中有以下几行 mkdir max15 mkdir max14 mkdir max13 mkdir max12 mkdir max11 mkdir max10 将它们放入循环的语法如何 这样我就不必编写数
  • Windbg内存映射?

    如何在 Windbg 中获得类似于 Ollydbg 内存映射功能的内存映射 我想查看按顺序显示加载到每个范围的内容的地址空间列表 最好带有指示的内存保护 这是 Ollydbg 内存映射的屏幕截图 address准确显示此信息 它可以在用户模
  • 为什么当 Count 返回 0 时 HasMoreResults 返回 true?

    我正在使用 Microsoft Azure DocumentDB v 1 5 2 尚未准备好升级 IDocumentQuery ExecuteNextAsync Count 0 but IDocumentQuery HasMoreResul
  • 无法以二进制数据形式获取 PDF 文件

    我正在尝试从以下位置获取 PDF 文件 URL https 域名 xyz id download https domain name xyz id download 其中它不指向直接的 pdf 文件 并且每个唯一的文件都会被下载 解释特定的
  • 将 LoDash 与 EmberCLI 结合使用

    有谁有使用 LoDash 的 Ember CLI 构建的 简单 ember app 项目的工作示例吗 例如 我想在我的路由和控制器中使用 lodash someLodashFunc 我还没有在网上看到任何帖子 文章对如何做到这一点给出清晰的
  • MySQL 订单问题

    我有一个非常简单的 SQL 查询 但缺少一些东西 而且我还没有找到这个问题的答案 问题是我选择了一些具有多个 id 的字段 并且我希望结果按此特定顺序排序 查询如下 SELECT content FROM content WHERE use
  • Gsettigs 和 dconf 设置热键

    Hello 我需要在 ubuntu 12 10 中设置一个热键 我使用 gsettings dconf gsettings set org gnome settings daemon plugins media keys custom ke
  • 使用 WinSCard 库获取 mifare 卡序列号

    我正在开发一个需要读取 Mifare 卡序列号的应用程序 我使用的语言是 C 我是 mifare 读卡器编程的新手 所以很抱歉问了愚蠢的问题 首先我想知道Mifare UID和Mifare序列号是否有不同 我已经在 WinSCard 库的帮
  • Objective-C 中强弱的区别

    两者有什么区别strong and weak in property对象指针的声明 另外 什么是nonatomic mean 考虑气球方面的强引用和弱引用可能会有所帮助 只要至少有一个人抓住气球上的一根绳子 气球就不会飞走 持有字符串的人数
  • 获取 30 天前的日期和时间

    我想计算从现在 例如 14 月 30 日 23 06 到 30 天前 例如 14 月 1 日 23 06 的 php 过去 30 天时间段 我写了这篇文章 其中当前日期时间在 d1 中 过去 30 天的日期时间在 d2 中 但不知何故我没有
  • 整数到字节的转换

    假设我有一个整数 13941412 我希望将其分成字节 该数字实际上是 0x00bbggrr 形式的颜色 你会怎么做 在 c 中 您可以将数字转换为 BYTE 然后移动位 Python 中如何转换为字节 使用按位数学运算符 字节 已经存在
  • Spark的HiveContext内部是如何工作的?

    我是 Spark 新手 我发现使用HiveContext我们可以连接到hive并运行HiveQLs 我运行它并且它起作用了 我的疑问是Spark做到了spark jobs 也就是说 它使用HiveContext仅用于从HDFS访问相应的hi
  • 使用 Gulp 读取、重建和替换文件中的内容块的最有效方法是什么?

    我正在创建一个可以读取任何文件 php jsp html 等 定位块标签并根据块标签中的信息进行替换的系统 我将写入我的文件的代码 testObject name jonathan number 3 male true 所需更换 h1 Jo
  • 在 Visual Studio 中,我可以在调试时禁用对应用程序进行签名吗?

    在 Visual Studio 的项目属性 gt 签名选项卡中 我已使用代码签名证书对我的项目进行了签名 然而 在我的团队中 我是唯一拥有代码签名证书的人 即使我们处于多开发人员环境中 当其他开发人员尝试 开始调试 时 他们会收到以下消息
  • 编译错误 - Groovy 和 Lombok

    这是我的 Maven 命令 mvn clean compile test compile test for 这个项目 https github com prystasj lombok groovy example 但我面临着 错误 不再有标
  • 打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素

    我正在自定义中实现辅助功能UITableViewCell班级 我有一个相当简单的溢出菜单 里面有几个按钮 这些按钮是隐藏的 直到按下省略号按钮滑动打开并关闭溢出 在我的单元格的初始化程序中 我设置accessibilityElementsH