根因:.extendPartial pageMap更新提交时使用了异步扩展开始时捕获的 currentPageNumber/currentLocation,在pageCurl模式下用户可能已经翻了几页, 导致过时值通过transitionToPage把用户拉回旧位置。 修复三点: 1. PresentationRuntime: .extendPartial fallback不再使用捕获的 currentPageNumber,改用readerView.currentPage实时值 2. ChapterWarmupOrchestrator: 异步加载完成回调中使用实时位置 (readerView.currentPage + locationCoordinator.currentVisibleLocation()) 而非异步开始时捕获的旧值 3. PresentationRuntime: rebindVisiblePage在pageCurl模式下, 如果正在翻页动画中(isPageCurlTransitioning),延迟到动画结束后 再用实时currentPage执行transitionToPage,避免在pageNum回调栈 内同步触发transitionToPage导致重入 Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| EPUBCore | ||
| EPUBTextRendering | ||
| EPUBUI | ||
| ReaderView | ||