Sleepy iOS a.v.1.0.41 — 教务 WebView 跳转修复 + 全 app 触摸热区修复
Sleepy iOS a.v.1.0.41 — 教务 WebView 跳转修复 + 全 app 触摸热区修复
教务导入: 中间页卡片点不动(修复)
新窗跳转被静默丢弃(用户报障核心)
- 教务系统(如哈工程金智教务)功能卡片大量使用
target="_blank"/window.open(),多级跳转后停在某页点卡片无反应。根因:WKWebView 没有 WKUIDelegate 时新窗请求被静默丢弃——Android WebView 默认在当前页打开新窗,移植 iOS 时这层语义丢了。 - 修复:挂
NavUIDelegate.createWebViewWith,新窗 URL 一律在当前 WebView 内打开(对齐 Android 行为)。普通链接/重定向不受影响。
重定向链混 http 中间页断掉
- 校园网教务系统的跳转链常夹 http 中间页,WKWebView 默认按 ATS 拦截,表现为跳一半断掉。已在 Info.plist 放开
NSAllowsArbitraryLoadsInWebContent(只作用于 WebView 内网页内容,不影响 app 自身网络请求),等价 Android 的mixedContentMode=ALWAYS_ALLOW。
全 app 触摸热区: 点色块无反应,必须点中图标/文字(修复)
- 全 app 63 处按钮用了
.buttonStyle(.plain),其点击判定只认图标/文字的字形边界,padding+ 色块背景不参与命中——所以点"检查更新"整条色块、我的页"所有课表/导出/提醒"等设置行、各设置卡片行,只有恰好点中图标或文字才触发。 - 新增统一
SleepyButtonStyle:contentShape(Rectangle())让整块色卡任何位置可点,并补了按下的透明度反馈(Material 手感)。63 处全部替换,今后新按钮统一走这个样式。 - 覆盖面:按钮 63 处 +
onTapGesture块 3 处(原本已有 contentShape)全部核查过,无遗漏形态。
回归保护(本轮新增 9 用例)
- WebView 导航策略 4 单测:修复前对照(无 UIDelegate 确证新窗请求被丢)+ 修复后 target=_blank / window.open 在当前页打开 + 普通链接无回归。本地 HTTP server 提供页面,零网络依赖。
- WebView 端到端 3 用例:走真实导入入口(我的 → 教务导入 → 自定义 URL),分别验证 target=_blank / window.open / 普通 href 三类卡片点击后到达第二页。
- 热区回归 3 用例:关于页"检查更新"按钮色块区点击触发;我的页"所有课表"、"导出"行右端空白区点击跳转——锁死"点整块色卡"场景。
回归终态
- 全量:单元 148 passed / UI 127 passed / 0 failed / 1 skipped(权限固化用例按设计 skip)。
已知边界
- 哈工程教务(202.118.176.13)仅校园网可达,本轮用同构行为的本地页面完成端到端验证;真实站点请连校园网点一遍导入流程确认。
- 模拟器 XCUITest 合成点击与真机手指 hit-test 存在机制差异,触摸手感最终以真机验收为准。