Skip to content

OpenFicM 0.7.7

Choose a tag to compare

@tioners tioners released this 21 Aug 16:57
· 18 commits to main since this release

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。
  • 纯界面手势修复,不涉及数据、模型请求和蒸馏逻辑。