Files
e-party-iOS/issues/onChange iOS17 迁移.md
edwinQQQ b35b6e1ce1 feat: 移除CreateFeedView-Analysis文档并新增用户协议组件以增强用户体验
- 删除CreateFeedView-Analysis.md文档以简化项目结构。
- 新增UserAgreementComponent以处理用户协议的显示和交互。
- 更新多个视图中的onChange逻辑以兼容iOS 17的新API用法,确保代码一致性和可维护性。
- 在Localizable.strings中新增用户协议相关的本地化文本,提升多语言支持。
2025-08-01 14:34:53 +08:00

67 lines
1.9 KiB
Markdown

# onChange iOS 17 迁移总结
## 概述
将项目中所有使用已弃用的 `onChange(of:perform:)` API 的代码修改为 iOS 17 建议的新用法。
## 修改内容
### 修改规则
- **旧用法**: `onChange(of: value) { newValue in ... }`
- **新用法**: `onChange(of: value) { oldValue, newValue in ... }`
### 修改的文件列表
1. **LoginView.swift** - 3处修改
- `store.isAnyLoginCompleted` 监听
- `showIDLogin` 监听
- `showEmailLogin` 监听
2. **MainView.swift** - 3处修改
- `store.isLoggedOut` 监听
- `path` 监听
- `store.navigationPath` 监听
3. **EMailLoginView.swift** - 4处修改
- `store.loginStep` 监听
- `email` 监听
- `verificationCode` 监听
- `store.isCodeLoading` 监听
4. **RecoverPasswordView.swift** - 4处修改
- `email` 监听
- `verificationCode` 监听
- `newPassword` 监听
- `store.isResetSuccess` 监听
5. **ImagePickerWithPreviewView.swift** - 2处修改
- `viewStore.inner.isLoading` 监听
- `viewStore.inner.selectedPhotoItems` 监听
6. **EditFeedView.swift** - 1处修改
- `store.shouldDismiss` 监听
7. **DetailView.swift** - 1处修改
- `store.shouldDismiss` 监听
8. **MeView.swift** - 1处修改
- `detailStore.shouldDismiss` 监听
9. **IDLoginView.swift** - 1处修改
- `store.loginStep` 监听
10. **ContentView.swift** - 1处修改
- `selectedLogLevel` 监听
## 总计
- **修改文件数**: 10个
- **修改处数**: 20处
- **状态**: ✅ 完成
## 验证结果
通过 grep 搜索确认所有 `onChange(of:perform:)` 调用都已成功迁移到新 API。
## 注意事项
1. 新 API 提供了 `oldValue``newValue` 两个参数
2. 在大多数情况下,我们只使用了 `newValue` 参数,`oldValue``_` 忽略
3. 所有原有逻辑保持不变,只是 API 调用方式更新
4. 修改后的代码完全兼容 iOS 17+ 的要求