【问题标题】:Why @FocusState Crashing SwiftUI Preview为什么@FocusState 会导致 SwiftUI 预览崩溃
【发布时间】:2021-12-21 03:45:11
【问题描述】:

好的,我想知道为什么我的预览版在更新 Xcode 后无法正常工作。所以我有一个看起来像这样的枚举。

enum Field {
    case email
    case securedPassword
    case unsecuredPassword
}

现在,当我将 @FocusState 添加到我的 TestView 时,我的预览会崩溃并且不会更新。这是我的代码的样子。

struct TestView1: View {
    @FocusState var focusedField: Field?
    
    var body: some View {
        Color.blue
    }
}

现在,当我注释掉 @FocusState 时,我可以将颜色更改为红色,并且预览会更新。当@FocusState 未被注释掉时,当我将颜色更改为新颜色时,它不会更新预览并给我一个奇怪的崩溃。

现在这是一个错误,如果是,是否有解决方法?

【问题讨论】:

  • 看起来像 Xcode 缺陷
  • 您是否尝试过清理项目?你能提到你正在使用的 Xcode 版本吗?顺便说一句,它对我有用,我在 Xcode 13.1
  • @Asperi 那么它是一个错误吗?有办法解决吗?
  • @JarvisTheAvenger Xcode 13.2.1 是的,b4 工作正常,但我更新并预览停止工作

标签: swiftui


【解决方案1】:

请参阅我几个月前在 Apple 开发者论坛上发布的相关答案:https://developers.apple.com/forums/thread/681571?answerId=690251022#690251022。 这对你有用吗?

struct TestView1: View {
    enum Field: Hashable {
        case email
        case securedPassword
        case unsecuredPassword
    }

    @FocusState var focusedField: Field?
    
    var body: some View {
        Form {
            Color.blue
        }
    }
}

struct TestView1_Previews: PreviewProvider {
    static var previews: some View {
        // Here we've wrapped `TestView1` in a `ZStack { ... }` View
        // so that it won't be the top-level View in our Preview, to avoid
        // the known bug that causes the `@FocusState` property of a
        // top-level View rendered inside of a Preview, to not work properly.
        ZStack {
            TestView1()
        }
    }
}

【讨论】:

  • 是的,通过将 TestView1 嵌套到预览内的 ZStack 中来做到这一点。谢谢。
  • 不客气,@LuisRamirez。我很高兴能帮上忙:)!我很确定我确实向 Apple 报告了这个错误,但它可能是我提交给他们的关于屏幕键盘未显示在 SwiftUI Preview 中运行的错误报告的一部分Xcode 在物理 iPhone 上点击 TextField 后预览应用程序,直到应用程序首先被发送到后台,然后又被带回前台...
  • @JeremyPearson 非常感谢!!,提交了反馈意见
  • 谢谢!我有点疯狂地试图弄清楚我做错了什么:)。我也提交了反馈。希望有很多人报告这个。
  • 在预览中添加 ZStack 为我解决了这个问题。谢谢
猜你喜欢
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
相关资源
最近更新 更多