Я создаю простое представление SwiftUI для приложения Catalyst Mac следующим образом:
var body: some View {
ZStack {
Color(envColor.getColor())
HStack {
Spacer()
VStack {
HStack {
TextField("First", text: $envColor.stringR)
TextField("Second", text: $envColor.stringG)
}
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 100, maxHeight: 200)
.background(Color.gray)
Spacer()
VStack {
Text("Right Side")
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 100, maxHeight: 200)
Spacer()
}
}
}
Когда я запускаю приложение, оно выглядит так: простой вид с двумя текстовыми полями. Оба они вы можете свободно вводить без проблем.
Вы можете выделить и отредактировать 255 без проблем.
Однако, когда я добавляю тень к своему VStack вот так:
var body: some View {
ZStack {
Color(envColor.getColor())
HStack {
Spacer()
VStack {
HStack {
TextField("First", text: $envColor.stringR)
TextField("Second", text: $envColor.stringG)
}
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 100, maxHeight: 200)
.background(Color.gray)
.shadow(radius: 5)
Spacer()
VStack {
Text("Right Side")
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 100, maxHeight: 200)
Spacer()
}
}
}
Приложение выглядит точно так же, но я вообще не могу вводить TextField
s. Они не выделяются, и я не могу их вводить. Я посмотрел на иерархию представления отладки, и она выглядит нормально с TextField
спереди.
Вот видео, на котором я использую его с тенью. Как видите, курсор не меняется, чтобы я мог редактировать.
Действительно ли добавление тени к VStack вызывает проблему? А я что-то неправильно делаю? Или это ошибка?
drawRect
метод, поэтому shadow не будет работать с ним. Фон с тенью работает, потому что делает дополнительныеCALayer
. https://stackoverflow.com/questions/34868344/how-to-change-the-background-color-of-uistackview/39720288 - person imike   schedule 31.03.2020