源码注释: - 为 ~60 个 Swift 文件补充缺失的 doc comment(file header、类型、属性、方法) - 修正 4 处错误注释:翻页模式数量、搜索行为描述、手势识别器描述、悬空文档块 文档维护: - 删除重复文档:WXRead/读书EPUB阅读器实现架构.md(与微信读书版完全一致) - 合并重叠文档:阅读器规划.md → 阅读器功能开发计划.md(单一真值) - 修正过时内容:所有文档中"四种翻页模式"→"三种",移除 horizontalCoverScroll - 更新架构图:补齐 EPUBUI/ReaderController、Paging/、Typesetter/ 等子目录 - 更新 index.md 索引:新增开发计划和架构对比文档引用
42 lines
1.4 KiB
Swift
42 lines
1.4 KiB
Swift
//
|
||
// RDReaderTapRegionHandler.swift
|
||
// ReadViewSDK
|
||
//
|
||
// 文件职责:点击区域判定处理器,将屏幕点击坐标映射为翻页或工具栏操作事件。
|
||
//
|
||
|
||
import CoreGraphics
|
||
|
||
/// 点击区域判定处理器
|
||
/// 将屏幕三等分为左、中、右三个区域,根据点击位置和工具栏可见状态
|
||
/// 决定触发上一页、下一页还是切换工具栏。
|
||
struct RDReaderTapRegionHandler {
|
||
/// 根据点击坐标和视图尺寸,解析点击事件类型
|
||
/// - 左1/3区域:上一页(工具栏可见时转为 center)
|
||
/// - 中1/3区域:切换工具栏
|
||
/// - 右1/3区域:下一页(工具栏可见时转为 center)
|
||
func resolveTapEvent(
|
||
point: CGPoint,
|
||
viewFrame: CGRect,
|
||
isToolViewVisible: Bool
|
||
) -> RDReaderView.TapEvent {
|
||
let leftFrame = CGRect(x: 0, y: 0, width: viewFrame.width / 3, height: viewFrame.height)
|
||
let centerFrame = CGRect(x: viewFrame.width / 3, y: 0, width: viewFrame.width / 3, height: viewFrame.height)
|
||
let rightFrame = CGRect(x: viewFrame.width * 2 / 3, y: 0, width: viewFrame.width / 3, height: viewFrame.height)
|
||
|
||
if leftFrame.contains(point) {
|
||
return isToolViewVisible ? .center : .left
|
||
}
|
||
|
||
if centerFrame.contains(point) {
|
||
return .center
|
||
}
|
||
|
||
if rightFrame.contains(point) {
|
||
return isToolViewVisible ? .center : .right
|
||
}
|
||
|
||
return .none
|
||
}
|
||
}
|