![](/img/trans.png)
[英]iOS - Keep input keyboard of TextField state when change to different TextField
[英]SwiftUI Textfield state change stopped working with iOS 15.4.1
以下代碼在 iOS 15.4.1 之前運行良好。 它只是在輸入的值大於 100000 后啟用文本字段旁邊的按鈕。它仍然適用於 15.3.1,但停止使用 15.4.1。 知道發生了什么改變以阻止它工作嗎?
import SwiftUI
struct ContentView: View {
@State private var woid:Int? = nil
@State var showResults = false
private var woidFormatter:NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.groupingSeparator = ""
return formatter
}()
var body: some View {
Form {
Section(header: Text("Work Order Lookup")) {
HStack {
TextField("Work Order Number", value: $woid, formatter: woidFormatter)
.keyboardType(.numberPad)
Spacer()
Button("Lookup") {
showResults.toggle()
}.buttonStyle(PurpleButton(disabled: (woid ?? 0) < 100000))
.disabled((woid ?? 0) < 100000)
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct PurpleButton: ButtonStyle {
let disabled:Bool
let cardColor:Color = Color(#colorLiteral(red: 0.5568627715, green: 0.3529411852, blue: 0.9686274529, alpha: 1))
func makeBody(configuration: Configuration) -> some View {
configuration.label
.padding()
.background(disabled ? Color.gray : cardColor)
.foregroundColor(.white)
.clipShape(RoundedRectangle(cornerRadius: 10, style: .continuous))
}
}
我不確定為什么它以前有效,但使用選項的正確簽名是這個:
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
public init<F>(_ titleKey: LocalizedStringKey, value: Binding<F.FormatInput?>, format: F, prompt: Text? = nil) where F : ParseableFormatStyle, F.FormatOutput == String
更改此行:
TextField("Work Order Number", value: $vm.woid, formatter: woidFormatter)
到這個作品
TextField("Work Order Number", value: $vm.woid, format: .number)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.