React Native TTS iOS 问题全解析:修复 BOOL 错误与事件监听失效(2026 实战指南)
React Native TTS iOS 问题全解析:修复 BOOL 错误与事件监听失效(2026 实战指南) 在 React Native 中使用文本转语音(TTS)本来很简单,但在 iOS 上却可能踩坑。 本文总结了两个非常常见但又很隐蔽的问题,并提供经过验证的解决方案。 🧨 问题一:Objective-C type BOOL is unsupported 错误信息 TextToSpeech.setDefaultRate(): Error while converting JavaScript argument to Objective C type BOOL convert javascript argument to object C type Bool object C type bool is unsupported 🔍 根本原因 这 不是你的代码问题 。 这是由于 iOS 原生桥接层(Objective-C)类型定义错误导致的,尤其在 React Native 新架构(Fabric / TurboModules)下更容易触发。 部分版本的 react-native-tts 错误地使用了: (BOOL *)onWordBoundary ❌ 错误 而 React Native bridge 不支持 BOOL 指针类型 ,只支持: BOOL NSNumber * ✅ 解决方案 https://github.com/ak1394/react-native-tts/issues/291 使用已修复的 fork 版本: @iternio/react-native-tts npm install @iternio/react-native-tts 该版本已修复 iOS 类型问题,可以正常运行。 ⚠️ 问题二:事件监听器未注册 警告信息 Sending `tts-start` with no listeners registered. 即使你已经写了监听: Tts.addEventListener('tts-start', () => { setIsSpeaking(true); }); 🔍 根本原因 问题在于: ...