在 Swift 中,如何在 Voiceover 说话时停止文本转语音,反之亦然?

2024-02-16

现在,我的应用程序实现了AVSpeechSynthesizer读出每个屏幕的说明。该应用程序还会考虑何时启用 Voiceover 辅助功能。

我现在面临的问题是文本转语音功能与画外音功能重叠。是否有解决方案可以检测到当用户导航到屏幕上的另一个元素时,TTS 停止说话,或者当 TTS 说话时,旁白在 TTS 完成之前不会说话(不过前者是首选)。

目前的开发是在 iOS 8 上使用 Swift。


OPTION 1

您可以通过观察来聆听新元素何时被聚焦UIAccessibilityElementFocusedNotification通知

[[NSNotificationCenter defaultCenter] addObserver:yourTTSManager
                                         selector:@selector(interruptTTSFunction:)
                                             name:UIAccessibilityElementFocusedNotification 
                                           object:nil];

并在收到自定义语音合成公告时中断它们。

优点:为 VoiceOver 用户提供很多控制权。

缺点:您不知道 VoiceOver 何时完成朗读新聚焦的控件,因此您无法使用它来中断和重新启动公告。

OPTION 2

您可以通过发帖来告诉 VoiceOver 暂停和重新启动

UIAccessibilityPostNotification(UIAccessibilityPauseAssistiveTechnologyNotification, nil); 

在您宣布之前以及

UIAccessibilityPostNotification(UIAccessibilityResumeAssistiveTechnologyNotification, nil); 

完成后。

优点:您的公告将被完整地宣读。

缺点:当您暂停 VoiceOver 时,您就失去了用户的控制权。

推荐

如果您的公告很短,暂停和恢复 AT 并不是一个糟糕的解决方案。否则,我建议允许 VoiceOver 用户通过收听来中断/取消您的公告UIAccessibilityElementFocusedNotification事件,并在收到任何活动公告时取消它们。

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

在 Swift 中,如何在 Voiceover 说话时停止文本转语音,反之亦然? 的相关文章

  • iOS 8:UINavigationController 隐藏后退按钮

    在 iOS 8 XCode 6 0 1 iPhone 6 中运行应用程序后 后退按钮不会隐藏 My code void removeCategoriesButton if UI USER INTERFACE IDIOM UIUserInte
  • UISearchBar - ReturnKeyType 不适用于 iOS 8

    我在用UISearchbar在故事板的表视图控制器中 和搜索栏returnKeyType is UIReturnKeySearch 它在 iOS7 上运行良好 但是returnKeyType不适用于 iOS8 在iOS8中 键盘上每次都会出
  • 使用 SpeechSynthesis 将文本转换为语音时,.NET 4.5 中的 WebAPI 中的 HTTP Get 请求没有响应

    我正在尝试使用 WebAPI 设置一个简单的 Web 服务 这是我的代码 public class SpeakController ApiController api speak public HttpResponseMessage Get
  • Python GTTS 错误:AttributeError:“NoneType”对象没有属性“group”

    我有一个项目正在进行文本到语音转换 我的音频文件被存储为 mp3 但现在 当我检查 Gtts api 时抛出错误 我尝试搜索但找不到该错误的可行解决方案 我的代码如下 def synth sent language en slow Fals
  • 即使支持,speechSynthesis 也无法在移动 Safari 上运行

    我正在尝试使用speechSynthesis API 它适用于桌面浏览器和移动 Chrome 但不适用于移动 Safari const msg new SpeechSynthesisUtterance Hello World window
  • 如何知道 Android TalkBack 是否处于活动状态?

    我正在开发一个使用 TalkBack 来指导人们完成的应用程序 然而 在这些情况下 我希望应用程序的布局有一些细微的差异 以便导航更容易 并且还有额外的语音输出 使用 TextToSpeech 来帮助指导用户 我的问题是 如果用户激活了 T
  • 在 WKWebView 中加载本地文件在设备中不起作用

    我无法在 wkwebview 中加载本地 epub 文件 从文档目录 它可以在模拟器中运行 但不能在设备中运行 我了解到这是 iOS 8 的一个错误here http www openradar me 18039024 iOS 8 已经解决
  • 键盘扩展:是否可以继承 iOS 现有键盘的功能和 UI?

    自定义键盘扩展 https developer apple com library ios documentation General Conceptual ExtensibilityPG Keyboard html是 iOS 8 中的一个
  • 使用 Chrome TTS 的 SSML

    我试图通过强调等方式让 TTS 句子更加清晰 我正在使用Chrome TTS API http developer chrome com extensions tts html 这表明它接受SSML 格式的文档 http www w3 or
  • 在 iOS8 中使用 UISearchBar 启用取消按钮

    有什么方法可以启用 UISearchBar 的 取消 按钮吗 现在 每当我致电辞职第一响应者时 取消按钮都会被禁用 仅当我再次点击搜索栏时 取消才会启用 有没有办法停止禁用取消按钮 这是适用于 iOS 8 和 Swift 的可行解决方案 f
  • 如何配置Android AccessibilityService

    我正在研究AndroidAccessibilityService想要查看所有可能发生的事件类型 手势和关键事件 我能够收到所有public void onAccessibilityEvent final AccessibilityEvent
  • 用于 JAWS 开发的文本控制台?

    我正在开发一个网络应用程序 我希望通过屏幕阅读器使其易于使用 在 JAWS 中测试东西非常耗时 是否可以让 JAWS 显示文本而不是阅读它 我实际上不想听到开发过程中的内容 我只是想看看 JAWS 会读什么 据我所知 大白鲨 没有语音查看器
  • Swift TTS,无音频输出

    我尝试在我的应用程序 TTS 中集成 但如果单击按钮 则没有音频输出 这是按钮代码 struct VocabDetailView View var body some View HStack Button Play readOut text
  • iOS 8 UITableView 分隔符插入 0 不起作用

    我有一个应用程序 其中UITableView的分隔符插入设置为自定义值 右0 Left 0 这完美地适用于iOS 7 x 但是在iOS 8 0我看到分隔符插入设置为默认值15在右侧 即使在 xib 文件中它设置为0 它仍然显示不正确 我该如
  • JavaScript 与 WKWebView 的同步本机通信

    使用 WKWebView 可以在 JavaScript 和 Swift Obj C 本机代码之间进行同步通信吗 这些是我尝试过但失败的方法 方法 1 使用脚本处理程序 WKWebView接收JS消息的新方式是使用委托方法userConten
  • Android 辅助功能服务检测通知

    我试图让我的应用程序在显示通知时进行检测 我已在设置应用程序中启用它并且onServiceConnected确实接到电话 但是当我创建通知或通过 gmail 应用程序接收电子邮件时 什么也没有发生 onAccessibilityEvent没
  • 在 Xcode 6 中定位 iOS 7.1 或 7.0 时,应用程序中出现黑条

    重现步骤 使用Xcode6创建一个新项目 单视图模板 仅限iPhone Objective C 导航到项目设置并将部署目标从 8 0 更改为 7 1 在安装了 7 1 的 iPhone5 S 或 iPhone5 s 7 1 模拟器中运行应用
  • 为什么 UITableViewCell 不可访问(对于 VoiceOver)

    我并不是想解决任何问题 当然你可以设置isAccessibilityEnabled true它有效 我的问题是 为什么它默认关闭并且界面生成器中没有适当的部分 在我看来 不建议使 UITableViewCell 子类可访问 有没有更好的方法
  • Highcharts SVG 辅助功能

    Highcharts 创建的 SVG 没有标题 没有有意义的 desc 也没有 ARIA 属性 或者至少我在 API 中找不到任何内容来设置这些属性 按照以下提示操作http www sitepoint com tips accessibl
  • 企业发行版在 Swift 应用程序中与 iOS8 配合不佳

    我在使用 swift 应用程序在 iOS 8 设备上运行 Enterprise 版本时遇到问题 如果我使用非企业帐户进行代码签名 它似乎工作正常 有人遇到这个问题吗 以下是我在尝试使用企业帐户运行构建以进行协同设计时在 iOS 设备上收到的

随机推荐

  • 那么我在这里谈论的是 SOA 吗?

    对于政府合同 我们将建议建立一个交通监控架构 我们将有以下组件 摄像机设置在感兴趣区域周围 摄像机将了解它们的位置和方向以及观看参数 GIS地图服务器 可以查询街道 建筑物等 一种算法接收原始视频和街道位置信息并输出汽车位置 另一种算法接收
  • 检查字符串是否包含列表中的元素的更智能方法 - python

    List top brands包含品牌列表 例如 top brands Coca Cola Apple Victoria s Secret items is a pandas DataFrame结构如下图所示 我的任务是填写brand na
  • Visual Studio 2008 类视图缺少类

    我刚刚将一个大型项目从旧版本的 Visual C 移植到 VS2008 并注意到类视图缺少一些我的类 查看解决方案视图 声明这些类的头文件存在 因此我希望在类视图中看到它们 排除某些类的任何原因 或者有什么方法可以刷新类视图以包含解决方案中
  • shiny,DT,styleColorBar 正值和负值的颜色不同?

    我已阅读 DT pdf 文档并进行了搜索 但 DT 包似乎不支持不同的颜色 我怎样才能达到下面图片链接所示的效果 谢谢 示例 正值和负值使用不同的颜色 https asymmetryobservations files wordpress
  • 将 copts/defines 传播到目标的所有依赖项

    我有一个项目 在一个相当复杂的构建系统中的单个工作空间中涉及多个构建文件 简而言之 我的目标 对于某些特定目标 我希望使用一组额外的属性来构建其所有递归依赖项 copts defines 与以任 何其他方式构建这些依赖项目标时相比 我还没有
  • 在 BIN 文件夹中找不到 ApacheJMeterTemporaryRootCA.crt

    我无法在 bin 文件夹中看到 ApacheJMeterTemporaryRootCA crt 文件 我正在运行 jmeter 5 2 1 我需要对此进行排序 以便能够将认证添加到对服务器的 API 调用中 请提供任何帮助或为我指明正确的方
  • 在 C# 中存储永远不会改变的静态数据的最佳方法是什么

    我有一个类将数据存储在 asp net c 应用程序中 并且永远不会改变 我真的不想将这些数据放入数据库中 我希望它保留在应用程序中 这是我在应用程序中存储数据的方法 public class PostVoteTypeFunctions p
  • 从html中提取标题标签

    我想从 html 字符串中提取标题标签的内容 我已经进行了一些搜索 但到目前为止我无法在 VB C 或 PHP 中找到此类代码 此外 这应该适用于大写和小写标签 例如应该与两者一起使用和 TITLE gt 谢谢 您可以为此使用正则表达式 但
  • 如何在 Haskell 中进行嵌套“循环”

    我正在查看一些 JAVA 代码 我想知道如何将其转换为 Haskell IntStream range 0 cookedWords length parallel forEach int i gt int A cookedWords i f
  • 在视图中播放框架配置值

    我如何访问该值application name from conf application conf在一个视图中 您可以使用以下代码示例来执行此操作 play configuration application name 另请参阅http
  • 如何使用 postData 过滤器刷新 jqGrid 搜索对话框

    我正在使用 jqGrid 到目前为止一切都运行良好 但现在我正在努力允许用户能够保存他们的搜索 以便他们以后可以检索它们和 或将它们应用到不同的网格 事实证明 节省实际上是最容易的部分 我可以根据指定的 postData 过滤器获取网格进行
  • Wix 卸载不删除文件,始终假定程序文件\myApp 文件夹

    我在使用 Wix 安装程序时遇到问题 并且不知道具体缺少什么 我已启用该对话框以允许用户选择自己的安装文件夹而不是默认的安装文件夹 如果我运行安装并保留默认的 Program Files MyApp 则应用程序安装没有问题 如果我随后卸载
  • 如何解决 Labview 加载冲突

    我正在 Labview 中开发一个数据采集程序 该程序使用多个平移台 相机 高速数字化仪和其他仪器 我正在一台计算机上开发该应用程序 并将其部署到另一台计算机上 开发计算机具有labview 2013 而要部署应用程序的计算机当前具有Lab
  • 在 Backbone.js 应用程序中设置全局 REST 根 url

    在backbone js中 您必须手动设置每个模型的rooturl 有没有一种方法可以将其设置在一个位置一次并且所有模型都会使用它 For eg api site com将是 REST 服务 但出于测试目的 它可能位于localhost 1
  • Apache NiFi:使用映射值将列添加到 csv

    使用 GetFile 处理器将 csv 导入 NiFi 工作流程 我有一列由 id 组成 每个id代表一个特定的字符串 大约有3个id 例如 如果我的 csv 包含 name age id John 10 Y Jake 55 N Finn
  • 我如何在 php 中获取上个月的名称[重复]

    这个问题在这里已经有答案了 可能的重复 php 中给定月份的下个月和上个月 https stackoverflow com questions 9172035 next and previous month from a given mon
  • EventAggregator 仅适用于 MVVM 中的 ViewModel?

    我了解到在 MVVM 设计中实现的事件聚合器模式可以帮助解耦 ViewModel 之间的通信 我认为事件聚合器确实是个好主意 但转念一想 事件聚合器仅由 ViewModel 使用吗 模型可以在事件聚合器中发布和订阅事件吗 通过这种方式 Vi
  • 创建一个函数以从 Oracle 数据库中获取数据(按 ID 排列的数组)

    我正在尝试创建一个函数 它只允许我向其中传递 SQL 语句 并且它将根据我传递给它的唯一 ID 生成一个数组 function oracleGetGata query id id global conn sql OCI Parse conn
  • appspot.com 网址显示在 Google 搜索结果中,而不是自定义域名

    我已经设置了http www footballverdict com http www footballverdict com它托管在 Google App Engine 上 一切正常 您可以毫无问题地访问自定义域 由于某种原因 当我在 G
  • 在 Swift 中,如何在 Voiceover 说话时停止文本转语音,反之亦然?

    现在 我的应用程序实现了AVSpeechSynthesizer读出每个屏幕的说明 该应用程序还会考虑何时启用 Voiceover 辅助功能 我现在面临的问题是文本转语音功能与画外音功能重叠 是否有解决方案可以检测到当用户导航到屏幕上的另一个