【发布时间】:2020-10-23 14:32:20
【问题描述】:
我偶然发现了这段代码:
class TextLimiter: ObservableObject {
private let limit: Int
init(limit: Int) {
self.limit = limit
}
@Published var value = "" {
didSet {
if value.count > self.limit {
value = String(value.prefix(self.limit))
self.hasReachedLimit = true
} else {
self.hasReachedLimit = false
}
}
}
@Published var hasReachedLimit = false }
struct Strix: View {
@ObservedObject var input = TextLimiter(limit: 5)
var body: some View {
TextField("Text Input",
text: $input.value)
.border(Color.red,
width: $input.hasReachedLimit.wrappedValue ? 1 : 0 )
} }
这是一个TextField限制代码,当用户在限制后输入字符后,它不会继续在框内输入字符。我试过这段代码,达到限制后,它只是继续输入字符。
例如:
它应该如何工作:限制是 5,所以唯一允许的输入是 'aaaaa'
它的行为方式:限制为 5,但允许的输入是 'aaaaaaaa.....'
我知道最近有一个解决方案:
但该解决方案是专门为 iOS 14 量身定制的。我希望能够支持 iOS 13。谢谢。
原始代码链接:
【问题讨论】:
标签: swiftui