#swiftui #hstack #swiftui-ontapgesture
#swiftui #hstack #swiftui-ontapgesture
Вопрос:
У нас есть пользовательский вид, который мы используем в формах (его основная особенность — возможность отображать красивую границу, если в форме есть ошибка проверки):
struct ButtonNavigationLink: View {
var label: String
var markingType: MarkingType = .none
var action: () -> Void
var body: some View {
GeometryReader { geometry in
HStack {
Text(label)
.offset(x: 5, y: 0)
Spacer()
Image("PfeilRechts")
}
.frame(width: geometry.size.width 10, height: geometry.size.height, alignment: .leading)
.padding(.trailing, 5)
.border(markingType.getMarkingColor())
.offset(x: -5, y: 0)
// to allow click on the whole width
.contentShape(Rectangle())
.onTapGesture {
print("in ButtonNavigationLink")
self.action()
}
}
}
}
onTapGesture работает хорошо, пока он больше не работает.
Это происходит, если мы открываем другие листы, а затем в конечном итоге переходим к этому.
Самое смешное, что — когда больше не работает — если вы прокручиваете, даже так слегка, форму, содержащую его, она снова начинает работать. Форма не отключена
Комментарии:
1. Можете ли вы добавить код формы тоже? Не удается воспроизвести.
2. if просто используется в форме { Section { .. ButtonNavigationLink }} я только что заметил, что если я удалю все onTapGestures из всех наших HStacks, то это будет работать без проблем.
3. удаление всех onTapGestues также не решило проблему
4. если я удалю форму-оболочку, все будет работать нормально. действительно странно
5. решение, которое я нашел для работы, заключается в следующем: изменил все onTagGestures на кнопку с действием. Для кнопки PlainButtonStyle это вызвало бы ту же проблему, поэтому она также была удалена