Настраиваемое текстовое поле SwiftUI в OSX - PullRequest
3 голосов
/ 18 февраля 2020

Я создаю представление редактирования в SwiftUI для Ma c OSX. Пользователь может изменить свой профиль. На данный момент я использую элементы Text() по умолчанию для просмотра его текущих значений / настроек.

Теперь я хочу создать режим редактирования. Я уже создал кнопку, которая переключает режим редактирования. Если режим редактирования активирован, я заменил каждый текст на TextField.

Когда я взглянул на книгу контактов Apple для Ma c OSX, я обнаружил, что они используют различные типы текстовых полей (см. Изображение)

enter image description here

enter image description here

Возможно ли использовать этот тип элемента в SwiftUI и в OSX? Как они называются или они просто настраивают TextFields с помощью Border? Я не мог найти официальную документацию о них. Если кто-нибудь найдет это, я был бы очень счастлив.

1 Ответ

3 голосов
/ 18 февраля 2020

Ну, в общем, все, что вам нужно, это PlainTextFieldStyle, но поскольку в настоящее время SwiftUI не позволяет отключить фокусировочное кольцо, есть некоторые обходные пути, чтобы отключить его глобально для всех текстовых полей.

В любом случае ... Я думаю, что стоит опубликовать, вот оно (проверено с Xcode 11.3)

enter image description here

extension NSTextField { // << workaround !!!
    open override var focusRingType: NSFocusRingType {
        get { .none }
        set { }
    }
}

struct ContentView: View {
    @State private var text = ""
    var body: some View {
        HStack {
            Text("Mobil")
            TextField("", text: $text)
                .textFieldStyle(PlainTextFieldStyle())
                .padding(1)
                .background(RoundedRectangle(cornerRadius: 2).stroke(Color.white))
                .frame(width: 100)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.black)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...