#swiftui
Вопрос:
Я пытался использовать .onTapGesture, чтобы определить, нажимает ли пользователь на экран. Однако я заметил, что он не срабатывает, если пользователь нажимает на доступные элементы, такие как кнопки и средства выбора. Есть ли способ определить, нажимает ли пользователь на экран, включая эти доступные для действий элементы, без необходимости вручную вызывать мою viewTapped
функцию для каждой кнопки, средства выбора и т.д. Отдельно?
Вот код, который я использовал для проверки этого.
struct ContentView: View {
@State var mode = 0
var body: some View {
ZStack {
VStack {
Text("Hello, world!")
.padding()
Picker(
selection: $mode,
label: Text("Picker")) {
Text("Option 1").tag(0)
Text("Option 2").tag(1)
}
.pickerStyle(SegmentedPickerStyle())
.frame(width: 200)
.foregroundColor(.white)
.padding()
Button {
print("button clicked")
} label: {
Text("Click me")
}
.padding()
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.green)
.onTapGesture {
viewTapped()
}
}
public func viewTapped() {
print("view tapped")
}
}
Комментарии:
1. Значит, вы хотите и
button clicked
то и другое иview tapped
напечатать?
Ответ №1:
Если вам нужно определить одновременность прикосновений, вместо этого вам понадобится simultaneousGesture
модификатор. Нравится:
.simultaneousGesture(
TapGesture()
.onEnded {
viewTapped()
}
)