You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:40:29