UITableViewCell 中的自定义 VoiceOver 操作

2024-05-05

When a UITableView是可编辑的,其UITableViewCells允许用户在 VoiceOver 打开时执行自定义操作。当 VoiceOver 光标位于单元格上时,用户可以通过向上或向下滑动来听到可用的操作,然后通过双击屏幕上的任意位置来调用操作。我的单元格中只有两个可用操作:Delete(调用通常的单元格删除)和Default(调用单元格上的点击)。我的问题有两个:

有没有办法向单元格添加自定义 VoiceOver 操作?

默认情况下Delete即使表视图委托返回自定义标题,操作也会被读出为“删除”tableView:titleForDeleteConfirmationButtonForRowAtIndexPath:方法。如何让 VoiceOver 读出自定义操作标题?


There is simply no API for supplying custom element actions to VoiceOver. No UIAccessibility* protocol provides anything for this to be possible. I guess you should file a radar if you need to add custom actions and hope Apple will implement it in some future version of iOS (or that it will appear in iOS 7 in a month).

UPDATE:从 iOS 8 开始,您可以设置/实现accessibilityCustomActions https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAccessibilityAction_Protocol/#//apple_ref/occ/instp/NSObject/accessibilityCustomActions属性返回您的数组UIAccessibilityCustomAction https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAccessibilityCustomAction_class/index.html对象(请注意,除了您提供的内容之外,VoiceOver 仍会在其 UI 中添加“激活项目”默认操作。):

self.accessibilityCustomActions = [
    UIAccessibilityCustomAction(name: NSLocalizedString("Close", comment: ""), target: self, selector: "didPressClose")
]
...
@objc
func didPressClose() -> Bool {
    ...
}

像往常一样使用 Swift 和选择器,不要忘记添加@objc https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-XID_37如果您没有子类化,则属性为 Swift 中自定义操作的目标方法NSObject/该方法是私有的,否则在尝试使用 VoiceOver 激活操作时,它不会执行任何操作并播放“已达到边界末尾”声音(至少在 iOS 8.2 和 8.3 上,我使用执行子类化的目标对象进行了测试NSObject).

关于你的第二个问题 - 感觉像是一个错误,你可以再次提交雷达:-)

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

UITableViewCell 中的自定义 VoiceOver 操作 的相关文章

随机推荐

  • 上传中止导致 Sails js/Skipper 崩溃

    Ref https github com balderdashy skipper issues 49 https github com balderdashy skipper issues 49 适配器 船长 gridfs 基本控制器代码
  • float.Parse 不再在 Unity 中工作 (C#)

    我有一个包含以下代码行的工作项目 public InputField mass float val float Parse mass text 非常简单 用户输入一定量的质量 然后将其从文本解析为浮动 几天前这工作得很好 我什至能够多次导出
  • Android 是否可以获取用户和设备所在国家/地区的货币代码?

    是否可以获取用户和设备所在国家 地区的货币代码 我想将用户当前国家 地区的国家 地区代码设置为默认国家 地区 我们在 Android 中有解决方案吗 由于这段代码可能对您有帮助 public class CurrencyTest publi
  • ASP.NET 电子邮件发送缓慢

    在我的 Web 应用程序 ASP NET MVC 中 我使用以下命令发送电子邮件 MailMessage msg new MailMessage email protected cdn cgi l email protection some
  • 将 Pandas 列转换为日期时间

    我在 pandas DataFrame 中有一个字段以字符串格式导入 它应该是一个日期时间变量 如何将其转换为日期时间列 然后根据日期进行过滤 Example raw data pd DataFrame Mycol 05SEP2014 00
  • 如何配置jackson属性命名策略?

    此代码不起作用 Configuration public class RepositoryRestMvcConfig extends RepositoryRestMvcConfiguration Bean Override public O
  • 如何在node-mysql查询后获取警告

    如何获取查询执行后识别的相应警告 如下所示 connection query squery function err rows search for OkPacket in 2 dimension array var warningCoun
  • 可空引用类型意外 CS8629 可空值类型对于临时变量可能为空

    在 C 8 项目中 我使用可为 null 的引用类型 并收到意外的 或者至少对我来说意外的 CS8629 警告 bool singleContent x DataInt null bool multiContent x DataNvarch
  • [a-zA-Z] 的正则表达式

    我有一个仅匹配英文字母的正则表达式 a a zA Z 字符类 有没有内置的正则表达式 我的意思是像 s or w 您正在要求一个速记班 http www regular expressions info shorthand html对于英文
  • 在 JSON 转换为 CSV 期间保持 JSON 键的顺序

    我正在使用此处提供的 JSON 库http www json org java index html http www json org java index html为了将 json 字符串转换为 CSV 但我遇到的问题是 转换后键的顺序
  • 有效地减去不同形状的 numpy 数组

    使用 numpy 出色的广播规则 您可以减去形状 3 数组v来自形状 5 3 数组X with X v 结果是一个形状 5 3 数组 其中每一行i是有区别的X i v 有没有办法减去形状 n 3 数组w from X使得每一行w从整个数组中
  • XmlAdapter 到 JAXB 绑定 Joda 的时间间隔?

    我已经被 Web 服务的 JAXB 绑定问题困扰了几个小时 为了准备一个必须返回 Joda Time 类实例 即时 持续时间 间隔等 的更大的 Web 服务 我从一个只有一个返回 Interval 的方法的 Web 服务开始 package
  • Xamarin Forms ListView onpressing 事件

    当按下项目时 我想通过绑定 以编程方式 更改 IconToShow 属性来更改图像 如何触发 OnPressed 事件
  • 是否可以使用不在 GROUP BY 中的 ORDER BY 列?

    正如标题所说 这是我的代码 SELECT material SUM Amount AS Amount RIGHT CONVERT varchar 50 date in 106 8 FROM rec stats GROUP BY materi
  • 适用于 Windows 7 的 32 位版本 VS Code

    我正在尝试获取可在 32 位 Windows 7 上运行的 VS Code 版本 这一页 https code visualstudio com docs supporting FAQ can i run vs code on window
  • 最大化列表视图中的可见行

    这是我的列表中项目的代码 假设我正在夸大这个TextView进入ListView
  • 默认情况下隐藏 JupyterLab 单元的输出

    我在用Jupyter实验室构建使用 bash 和 python 脚本的生物信息学管道 第一个 bash 脚本结果为该过程的每一步提供了大量反馈 但是 此反馈没有帮助 除非出现错误 并且使文档的可读性较差 我希望能够默认隐藏该单元格的输出 而
  • Android 应用安装验证

    我有一个应用程序 其中列出了用户可以安装并赚取积分的一些活动 应用程序列表 现在我主要关心的是安全性 一些用户从模拟器或VPN或其他东西安装应用程序 这样我的客户就无法在Google Play商店中安装应用程序 我见过一些应用程序 如现金海
  • 结果身份改变

    我正在使用 TOR 我想知道如何在需要国家 地区的结果节点之间切换 我可以简单地通过 telnet 9051 端口来更改它 例如 telnet localhost 9051 AUTHENTICATE r signal NEWNYM r qu
  • UITableViewCell 中的自定义 VoiceOver 操作

    When a UITableView是可编辑的 其UITableViewCells允许用户在 VoiceOver 打开时执行自定义操作 当 VoiceOver 光标位于单元格上时 用户可以通过向上或向下滑动来听到可用的操作 然后通过双击屏幕