Sto scrivendo una semplice app Mines per aiutarmi a conoscere SwiftUI. Come tale, voglio che il clic principale (di solito LMB) "scavi" (rivela se c'è una miniera lì) e il clic secondario (di solito RMB) per posizionare una bandiera.
Ho il lavoro di scavo! Ma non riesco a capire come posizionare una bandiera, perché non riesco a capire come rilevare un clic secondario.
BoardSquareView(
style: self.style(for: square),
model: square
)
.gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square)))
.gesture(TapGesture().onEnded(self.handleUserDidTap(square)))
Come ho insinuato in precedenza, la funzione restituita da handleUserDidTap
viene chiamata correttamente al clic, ma quella restituita handleUserDidAltTap
viene chiamata solo quando si tiene premuto il tasto Control. Questo ha senso perché è quello che dice il codice ... ma non vedo alcuna API che possa far registrare i clic secondari, quindi non so cos'altro fare.
Ho anche provato questo, ma il comportamento sembrava identico:
BoardSquareView(
style: self.style(for: square),
model: square
)
.gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square)))
.onTapGesture(self.handleUserDidTap(square))
.onTapGesture()
controlla.
.gesture(TapGesture().onEnded(.......))