SwiftUI: добавление ClearButton в TextField - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь добавить ClearButton к TextField в SwiftUI, когда выбран конкретный TextField.

Самым близким, что я получил, было создание ClearButton ViewModifier и добавление его к TextField с использованием .modifer()

Единственная проблема заключается в том, что ClearButton является постоянной и не исчезает при отмене выбора TextField

TextField("Some Text" , text: $someBinding).modifier(ClearButton(text: $someBinding))

struct ClearButton: ViewModifier {
    @Binding var text: String

    public func body(content: Content) -> some View {
        HStack {
            content
            Button(action: {
                self.text = ""
            }) {
                Image(systemName: "multiply.circle.fill")
                    .foregroundColor(.secondary)
            }
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 02 октября 2019

Вы можете добавить еще Binding в свой modifier:

@Binding var visible: Bool

, затем связать его с непрозрачностью кнопки:

.opacity(visible ? 1 : 0)

, затем добавить еще State дляпроверка textField:

@State var showClearButton = true

И, наконец, обновить текстовое поле:

TextField("Some Text", text: $someBinding, onEditingChanged: { editing in
    self.showClearButton = editing
}, onCommit: {
    self.showClearButton = false
})
.modifier( ClearButton(text: $someBinding, visible: $showClearButton))
0 голосов
/ 10 ноября 2019

Не совсем то, что вы ищете, но это позволит вам показать / скрыть кнопку на основе содержания text:

HStack {
    if !text.isEmpty {
        Button(action: {
            self.text = ""
        }) {
            Image(systemName: "multiply.circle")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...