В SwiftUI, как я могу выполнить жест, но перенаправить жесты представлению позади него? - PullRequest
0 голосов
/ 13 апреля 2020

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

Я хочу отклонить всплывающую подсказку, если пользователь касается чего-либо за пределами всплывающей подсказки.

Мне бы хотелось, чтобы касание за пределами всплывающей подсказки одновременно отклонялось всплывающая подсказка и активирует любые элементы управления, на которые нажал пользователь. (Таким образом, вы можете открыть всплывающую подсказку и по-прежнему нажимать кнопку вне подсказки и активировать ее при первом нажатии.)

Для этого у меня есть невидимое представление, обрабатывающее жест касания и отклоняющее подсказку, но я не знаю, как заставить SwiftUI не перехватывать и отменять жесты. В Интернете это равносильно тому, чтобы не звонить event.stopPropagation() и event.preventDefault() или вызывать super в touchesBegan: в UIKit .

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Вот демонстрация возможного подхода. Протестировано с Xcode 11.4 / iOS 13.4

struct ContentView: View {
    var body: some View {
        VStack {
            Button("Button") { print("> button tapped")}
        }
        .frame(width: 200, height: 200)
        .contentShape(Rectangle())       // makes all area tappable
        .simultaneousGesture(TapGesture().onEnded({
             print(">>> tooltip area here")
        }))
        .border(Color.red)   // just for demo show area
    }
}
0 голосов
/ 13 апреля 2020

Вам необходимо использовать этот модификатор:

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