Как избавиться от синей границы выделения вокруг текстовых полей SwiftUI? - PullRequest
0 голосов
/ 15 января 2020

Я создал два текстовых поля со следующим кодом:


VStack (spacing: geometry.size.width/48) {
    TextField("World Name", text: self.$WorldName)
        .font(.system(size: geometry.size.width/28))
        .textFieldStyle(PlainTextFieldStyle())
        .frame(width: geometry.size.width*0.75)
        .background(
            RoundedRectangle(cornerRadius: 8)
                .fill(Color.init(white: 0.28))
    )
    TextField("World Seed", text: self.$WorldSeed)
        .font(.system(size: geometry.size.width/28))
        .textFieldStyle(PlainTextFieldStyle())
        .frame(width: geometry.size.width*0.75)
        .background(
            RoundedRectangle(cornerRadius: 8)
                .fill(Color.init(white: 0.28))
    )
    Button (action: {
        withAnimation {
            self.back.toggle()
        }
        // Is there a way to "deselect" any textfields here
    }){
        Text("Back")
    }
}

Почему, когда я нажимаю на одно, появляется синяя рамка, которая не исчезает с анимацией, и как я могу удалить Это? Этот вопрос конкретно указан c, и я предоставил код и необходимые детали, я не понимаю, почему на него должно быть слишком сложно ответить.

Итак, вкратце, мне нужно знать:

  • Как избавиться от этой синей границы выделения

Или

  • Как немедленно отменить выбор текстового поля в действии кнопки,
  • Получить границу для правильного выравнивания с TextField, если я применю отступ или закругленные углы.

Единственный синий цвет на этой картинке - это рамка, на которую я ссылаюсь The only blue in this picture is the border I am referring to

Как показано на этом скриншоте, текстовое поле круглое, но граница выделения не округляется углы, отражающие форму прямоугольника с закругленными углами записи As shown in this screenshot, the textfield is round, but the selection border does not get round corners to reflect the rounded rectangle shape of the entry

Синяя рамка не соответствует отступу

The blue border does not fit the padding

Я добавил заполнение следующим образом .padding([.leading, .trailing], 6)

1 Ответ

0 голосов
/ 15 января 2020

Я не знаю, на какую синюю рамку вы ссылаетесь, если вы на textfield ссылаетесь на синюю рамку, нет синей рамки, потому что вы дали PlainTextFieldStyle

Чтобы отменить выбор текстового поля

UIApplication.shared.windows.filter({$0.isKeyWindow}).first?.endEditing(true)

Для округления textfield с отступом

ZStack {
    Rectangle()
    .foregroundColor(.clear)
    .overlay(RoundedRectangle(cornerRadius: 6).stroke(Color("appcolor").opacity(0.5), lineWidth: 1))

    TextField("Enter some text", text: $worldName)
        .padding([.leading, .trailing], 6)
}.frame(height: 42)
    .padding([.leading, .trailing], 10)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...