UIBarButtonItem 如何禁用辅助功能 (iOS)

2024-02-23

SO,

我正在尝试禁用已添加到 UINavigationController 的 leftBarButtonItems 中的 UIBarButtonItem 的 VoiceOver 可访问性。虽然我可以为没有标题的按钮禁用它,但我似乎无法为有标题的按钮禁用它。例如:

// Create the legend UIBarButtonItem
UIBarButtonItem *legendMenuBarItem = [[UIBarButtonItem alloc] initWithTitle:@"Legend" style:UIBarButtonItemStylePlain target:tool action:@selector(activate)];

// Should disable accessibility on the button, still enabled for subviews
[legendMenuBarItem setIsAccessibilityElement:FALSE];

// Remove "button" from VoiceOver speech for the button 
[legendMenuBarItem setAccessibilityTraits:UIAccessibilityTraitNone];

// Removed "Legend" from being spoken, but the button is still tappable in accessibility mode 
[legendMenuBarItem setAccessibilityLabel:@" "]; 

// Attempt to remove any accessibility elements... no real effect
[legendMenuBarItem setAccessibilityElements:nil]; 

// Supposedly this should disable all subviews from being accessible? Doesn't work...
[legendMenuBarItem setAccessibilityElementsHidden:TRUE]; 


// Add legend UIBarButtonItem to the end of the leftBarButtonItems 
NSMutableArray *currentLeftBarItems = [NSMutableArray arrayWithArray:[self.navigationItem leftBarButtonItems]];
[currentLeftBarItems addObject:legendMenuBarItem];
[self.navigationItem setLeftBarButtonItems:currentLeftBarItems];

我尝试了各种方法来禁用 VoiceOver,但即使在当前设置中,当我点击按钮时,它仍然显示“图例”。

我尝试过的更多场景:

这会禁用所有语音(需要),但仍然允许按钮进行交互(不需要):

[legendMenuBarItem setAccessibilityLabel:@" "]; 
[legendMenuBarItem setIsAccessibilityElement:TRUE];
[legendMenuBarItem setAccessibilityTraits:UIAccessibilityTraitNone];

据推测,这应该禁用 UIBarButtonItem 及其子视图的 VoiceOver(所需),但事实并非如此(不需要):

[legendMenuBarItem setIsAccessibilityElement:TRUE];
[legendMenuBarItem setAccessibilityElementsHidden:TRUE]; 

总之......我的问题是如何完全禁用可访问的交互性?通常我使用setIsAccessibilityElement:FALSE效果很好。但这次没有这样的运气。

Thanks!


The setAccessibilityElementsHidden仅当 UIElement 中确实包含一些元素时才有效。

Try to setAccessibilityElementsHidden to YES对于工具栏或栏按钮所在的容器。

Edit:如果您不希望特定栏按钮具有辅助功能,那么您需要将该按钮添加到工具栏辅助功能元素中,这是一个NSArray然后根据您的要求隐藏它。

Edit:这禁用了导航项的可访问性

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

UIBarButtonItem 如何禁用辅助功能 (iOS) 的相关文章

随机推荐

  • 从 ASP.NET MVC 中的 DropDownList 获取默认 NULL 值

    我正在创建一个Trailer对于现有的Driver 可以从下拉列表中选择 Html DropDownListFor x gt x Driver driverID SelectList ViewBag DriverID Please Sele
  • 在 C# 中使用 BCC 不带 TO 通过 SMTP 发送邮件

    我正在尝试使用System Net Mail MailMessageC 中的类来创建一封电子邮件 该电子邮件将通过以下方式发送到电子邮件地址列表BCC 我不想包括TO地址 但似乎我必须这样做 因为如果我使用空字符串作为TO地址在MailMe
  • 在C++中,如何在第一个'system()'结束后才执行第二个'system()'?

    请参阅下面的代码 如果有任何替代系统可以满足我的要求 那就太好了 strcat comando1 start c arquiv 1 winrar rar a D sisbibbkp teste1 strcat comando1 data s
  • 使用 base64 字符串的 C# LinkedResource

    我该怎么说 gt url data image jpeg base64 9j 4AAQSkZJRgABAgEASABIAAD 2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB into new
  • 如何使用! scala 中的运算符?

    我是 Scala 的新手 正在尝试一些基本操作来掌握这门语言 我正在尝试使用逻辑运算符 例如 val a2 0x01 0xFF println a2 我想对a2的值求负然后打印出来 但它给了我一个错误说 value unary is not
  • XML 命名空间“clr-namespace:YYY”中不存在标记“XXX”

    我已经实现了一个转换器 将 Int32 转换为 String 以便能够将属性绑定到文本框 我在命名空间 MyApp Converters 中实现了这个转换器 它被称为 Int32ToStringConverter 然后 在我的 axml 中
  • R:删除向量的最后一个元素

    如何删除动物园系列的最后 100 个元素 我知道名称 元素 符号 但我无法减去整个部分 我喜欢用head因为这样更容易打字 其他方法可能执行得更快 但我很懒 而我的计算机却不是 x lt head x 100 gt head 1 102 1
  • Pynput 键盘记录器仅返回 Shift、Command、空格和 Capslock 键

    我希望这个问题没有在之前的帖子中讨论过 我的搜索结果没有返回任何相关内容 但请随时启发我 我正在编写一个非常基本的 Python 键盘记录器 作为一个更大项目的一部分 我使用 pynput 来监听击键 并使用日志记录模块将它们写入 txt
  • 如何将数据读入Tensorflow?

    我正在尝试将数据从 CSV 文件读取到张量流 https www tensorflow org versions r0 7 how tos reading data index html filenames shuffling and ep
  • 如何禁用 VS Code“扩展开发主机”中的所有无关扩展而不覆盖我的正常用户配置?

    我正在尝试在 VSCode 扩展上进行调试 开发 为此 我需要在调试 扩展开发主机 中禁用所有 许多 其他扩展 然而 这样做 saves我的用户首选项 然后导致 我所有其他 VScode 实例 停止拥有任何扩展 如何在 扩展开发主机 中禁用
  • 发送简单的文本(不是电子邮件)到 SpamAssassin

    我想知道是否可以向 SpamAssassin 发送简单的文本 我想将评论放入文本文件中并调用 spamc 我相信您可以禁用任何引用标头的 SA 规则 但由于 消息 格式错误 它可能仍然会中断 即使没有 SA 评分也过于依赖标头 因此在不检查
  • Meteor 服务器 Websocket

    我正在寻找在 Meteor 服务器 而不是客户端 上创建一个 websocket 以连接到外部网站 我知道我要访问的 URL 以及期望的数据 但我不清楚如何准确地创建 websocket 本身 我所做的所有搜索都为我提供了客户端解决方案 但
  • HTML5 WebStorage 数据是如何物理存储的?

    在使用 HTML5 WebStorage 功能时 我知道某些浏览器 例如 Chrome 具有开发人员工具 使用户能够浏览其 WebStorage 的内容以进行调试和故障排除 我想知道是否可以查看文件系统中网络存储的内容 此内容是否存储在文件
  • 在 WPF ComboBox 中设置默认值

    我正在使用 ComboBox ItemsSource 属性绑定来显示从列表到组合框的项目 以下是代码
  • 如何获取发送到数据库的准备好的查询

    当使用像这样的数据库库时pyodbc http code google com p pyodbc 实施Python 数据库 API 规范 http www python org dev peps pep 0249 应用参数替换后如何获得完全
  • 从 do 块返回查询

    我想做的就是能够使用do块设置一些变量 然后返回一个查询STDOUT使用这些变量 DO DECLARE book name TEXT DECLARE book slug TEXT BEGIN book name Ise Monogatari
  • Ruby Gem 开发 - 如何使用 ActiveRecord?

    我目前正在尝试开发我的第一个红宝石宝石 但我已经陷入困境 我使用 bundle gem 命令创建基本结构并阅读了一些教程 但我找不到如何集成 ActiveRecord 我在哪里创建迁移 我是在 lib 文件夹中还是在根目录中创建 db mi
  • UIButtons 的 IBOutletCollection - 更改按钮的选定状态

    我在视图中遇到多个 UIButton 的问题 我希望单独选择按钮 一次选择多个按钮 例如 10 个按钮 选择按钮 1 4 5 9 在我的标头中 我有一个 IBOutletCollection 属性 property retain nonat
  • 如果MySQL数据库没有关闭会发生什么?

    如果MySQL数据库没有关闭会发生什么 我们如何知道它是否正确关闭 我确实有一个页面 页面上有 11 个表 所以我所做的是在脚本开始之前在页面顶部打开数据库 并在脚本 PHP 结束的地方关闭 结尾是 mysql close db 这足够公平
  • UIBarButtonItem 如何禁用辅助功能 (iOS)

    SO 我正在尝试禁用已添加到 UINavigationController 的 leftBarButtonItems 中的 UIBarButtonItem 的 VoiceOver 可访问性 虽然我可以为没有标题的按钮禁用它 但我似乎无法为有