iOS16.1中FileExporter的Move按钮为何禁用?求代码排查
问题描述
运行以下代码后,导出对话框能正常弹出,但其中的Move按钮处于禁用状态。有没有人在Xcode 14.1 beta 3/iOS16.1的iPad模拟器上碰到过这个问题?我的代码有没有明显错误?要是排查下来代码没问题,我就给Apple提交反馈报告了。

代码片段
import SwiftUI import UniformTypeIdentifiers struct ContentView: View { @State private var showFileExporter: Bool = false var body: some View { VStack { Text("Export file") .onTapGesture { showFileExporter = true } .fileExporter(isPresented: $showFileExporter, document: TextFile(), contentType: UTType.text) { result in } } .padding() } } struct TextFile: FileDocument { static var readableContentTypes = [UTType.text] static var writableContentTypes = [UTType.text] var text = "" init() {} init(configuration: ReadConfiguration) throws { if let data = configuration.file.regularFileContents { text = String(decoding: data, as: UTF8.self) } } func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper { let data = Data(text.utf8) return FileWrapper(regularFileWithContents: data) } }
分析与建议
- 代码无明显错误:
TextFile正确实现了FileDocument协议,读写类型配置、文件处理逻辑都符合SwiftUI规范;fileExporter的调用方式合规,状态绑定和参数均齐全。 - 大概率是测试版模拟器bug:不少开发者在Xcode 14.x beta版本搭配iOS 16.x模拟器时,遇到过文件导出对话框的交互异常,Move按钮禁用属于这类测试版常见的兼容性问题。
- 可做以下验证操作:
- 切换真机测试:如果真机上Move按钮正常工作,基本可以确定是模拟器的问题。
- 升级到最新测试版:Apple通常会在后续beta更新中修复这类UI交互bug,尝试更新Xcode和模拟器版本后再测试。
- 重置模拟器:偶尔模拟器缓存或状态异常会引发这类问题,重置后重试排查。
若以上操作后问题仍存在,可直接向Apple提交反馈报告,记得附上代码、截图和详细环境信息,帮助Apple定位问题。
内容的提问来源于stack exchange,提问作者Philip Pegden
相关产品推荐
相关产品推荐

