Repository navigation
OpenFicM 0.7.7
OpenFicM 0.7.7
修复:底部弹层里的滚动时灵时不灵
用户实测发现文风指南预览"往下拉没反应",但快速上滑有时又能滚。0.7.6 给 ScrollView 补的 flexShrink 解决了内容被裁剪的问题,却没解决滚动本身被抢走。
根因在所有底部弹层共用的一段写法:
<Pressable style={styles.modalBackdrop} onPress={close}>
<View style={styles.sheet} onStartShouldSetResponder={() => true}>外层 Pressable 负责"点击空白处关闭",内层 onStartShouldSetResponder ��来阻止点击弹层内容时误触关闭。问题是后者会在触摸开始的瞬间就把 JS responder 抢到手,而内部 ScrollView 要等到手指移动才争取滚动。快速滑动时原生滚动抢先拦截所以能滚,稍慢一点 JS responder 先设上,滚动就被挡住——表现就是同一个页面时灵时不灵。
现在改为遮罩与内容平级、遮罩铺满全屏并排在内容之前:内容天然盖在遮罩上,点内容不会命中遮罩,点内容之外才关闭。不再需要 onStartShouldSetResponder,responder 冲突随之消失。
这段写法在 4 个页面里有 10 处完全相同的副本,全部收敛到 components/ui.tsx 的 SheetBackdrop 组件,因此以下弹层的滚动和手势都一并修好:
- 文风书库:参考书详情、文风指南预览
- 助手:会话列表、模型选择、文风选择
- 写作页:文风选择、卷章目录、导出选项、卷章操作
- 设置:模型列表
角色库、世界书和书架的弹层用的是另一套 KeyboardAvoidingView 写法,没有这个问题,未作改动。
兼容性
- 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
- applicationId
com.openfic.mobile,versionCode 14,minSdk 28,仅 arm64-v8a。 - 纯界面手势修复,不涉及数据、模型请求和蒸馏逻辑。