相关疑难解决方法(0)

macOS 上 SwiftUI 中列表内的 TextField:编辑效果不佳

此问题与使用 Xcode 12.4 (SwiftUI 2) 的macOS应用程序(不是 iOS 或 Catalyst)的 SwiftUI 有关。问题在于,编辑列表内的文本字段效果不佳,事实上,它的效果非常差,以至于一开始我以为我根本无法编辑它。

这是代码,只是一个简单的例子:

import SwiftUI

struct ContentView: View {
    @State var name1 = "Hans"
    @State var name2 = "E"
    @State var name3 = ""
    
    var body: some View {
        List {
            TextField("Name 1", text: $name1)
            TextField("Name 2", text: $name2)
            TextField("Name 3", text: $name3)
        }
        .textFieldStyle(RoundedBorderTextFieldStyle())
    }
}
Run Code Online (Sandbox Code Playgroud)

具有焦点的文本字段

这就是我尝试编辑字段时的经历:

  • 对于非空字段,单击现有文本:它可以工作(在短暂但烦人的 0.5 秒延迟之后)。
  • 对于非空字段,在现有文本外部单击:不会发生任何情况。
  • 对于空字段(“名称 3”),单击字段中的任意位置:它可以工作(稍有延迟后)。
  • 双击任意字段内的任意位置:什么也不会发生。

我希望这不是预期的行为。对于仅包含单个字符的字段来说,这尤其成问题,使用户感到困难(必须准确地点击“E”)。我在这里做错了什么吗?

我注意到问题Editable TextField in SwiftUI List,它有点相似,但该问题报告 TextField …

macos textfield swiftui

7
推荐指数
1
解决办法
950
查看次数

@State 的限制

我在一些文章中看到@state有很多限制

  • 我们不应该将它与复杂的模型一起使用,最好将它与简单的属性(如 string、bool 等)一起使用。
  • 我们应该在视图本身内部使用它。

我尝试制作一个结构模型并在 contentview (ParentView)中用 @state 标记它,并通过用 @binding 包装它来将该模型传递给它的子视图,它工作得很好,所以我不明白为什么我们仍然需要 @objectbinding因为我们可以将相同的值传递给这些子视图,如果一个视图发生变化,其他视图也会发生变化?或者@objectbound解决的@state有哪些限制?

swift5 swiftui

2
推荐指数
1
解决办法
1067
查看次数

标签 统计

swiftui ×2

macos ×1

swift5 ×1

textfield ×1