【发布时间】:2021-02-12 00:24:52
【问题描述】:
我有一个具有 SwiftUI 应用程序生命周期的 SwiftUI 应用程序。我正在尝试设置一种标准的添加方式 键入 debounce 到 TextFields。理想情况下,我想创建自己的 TextField 修饰符 可以很容易地应用于需要编辑许多文本字段的视图。我试过一堆 方法来做到这一点,但我必须错过一些基本的东西。这是一个例子。这 不起作用:
struct ContentView: View {
@State private var searchText = ""
var body: some View {
VStack {
Text("You entered: \(searchText)")
.padding()
TextField("Enter Something", text: $searchText)
.frame(height: 30)
.padding(.leading, 5)
.overlay(
RoundedRectangle(cornerRadius: 6)
.stroke(Color.blue, lineWidth: 1)
)
.padding(.horizontal, 20)
.onChange(of: searchText, perform: { _ in
var subscriptions = Set<AnyCancellable>()
let pub = PassthroughSubject<String, Never>()
pub
.debounce(for: .seconds(1), scheduler: DispatchQueue.main)
.collect()
.sink(receiveValue: { t in
self.searchText = t.first ?? "nothing"
} )
.store(in: &subscriptions)
})
}
}
}
任何指导将不胜感激。 Xcode 12.4、iOS 14.4
【问题讨论】: