MacOS SwiftUI Textfield удаляется после потери фокуса - PullRequest
0 голосов
/ 10 февраля 2020

У меня странная проблема, когда текстовое поле удаляется после выбора другого текстового поля.

У меня есть EnvironmentObject

func applicationDidFinishLaunching(_ aNotification: Notification) {
        // Create the SwiftUI view that provides the window contents.
        let shellInteractor = ShellInteractor()
        let contentView = ContentView().environmentObject(shellInteractor)
}

, внедренный в представление

struct ContentView: View {
    @EnvironmentObject var shellInteractor: ShellInteractor

    var body: some View {
        ScrollView {
            VStack {
                HStack {
                    Text("Enter target bundle identifier:")
                    TextField("com.mycompany.app", text: $shellInteractor.bundleId)
                }.padding()
                HStack {
                    Text("Enter icon badge count:")
                    TextField("0", text: $shellInteractor.badgeNumber)
                }.padding()
                HStack {
                    Text("Enter message identifier:")
                    TextField("ABCDEFGHIJ", text: $shellInteractor.messageId)
                }.padding()

                Text("Found Running Sim: ")
                Text(self.shellInteractor.shellOutput).fontWeight(.semibold)
                Button(action: {
                    self.shellInteractor.sendNotification()
                }) {
                    Text("SEND!!!")
                    .fontWeight(.semibold)
                }.padding()
            }.padding()
        }
    }
}
class ShellInteractor: ObservableObject {
    @Published var shellOutput: String = ""

    public var badgeNumber: String = ""
    public var messageId: String = ""
    public var bundleId: String = ""
}

Как я уже сказал, когда я ввожу текст в любое из текстовых полей и выбираю другое текстовое поле или нажимаю клавишу TAB (в основном при потере фокуса), текстовое поле удаляет текст и снова отображает заполнитель.

1 Ответ

1 голос
/ 11 февраля 2020

обновить вашу модель

class ShellInteractor: ObservableObject {
    @Published var shellOutput: String = ""

    @Published var badgeNumber: String = ""
    @Published var messageId: String = ""
    @Published var bundleId: String = ""
}
...