Piszę prostą aplikację Mines, która pomoże mi poznać SwiftUI. W związku z tym chcę, aby główne kliknięcie (zwykle LMB) „wykopało” (ujawnij, czy jest tam kopalnia), a drugie kliknięcie (zwykle RMB), aby umieścić flagę.
Kopanie działa! Ale nie mogę wymyślić, jak umieścić flagę, ponieważ nie mogę wymyślić, jak wykryć drugie kliknięcie.
BoardSquareView(
style: self.style(for: square),
model: square
)
.gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square)))
.gesture(TapGesture().onEnded(self.handleUserDidTap(square)))
Jak sugerowałem wcześniej, funkcja zwracana przez handleUserDidTap
jest wywoływana poprawnie po kliknięciu, ale funkcja zwracana przez handleUserDidAltTap
jest wywoływana tylko wtedy, gdy przytrzymuję klawisz Control. Ma to sens, ponieważ tak mówi kod ... ale nie widzę żadnego interfejsu API, który mógłby zmusić go do zarejestrowania dodatkowych kliknięć, więc nie wiem, co jeszcze zrobić.
Próbowałem również tego, ale zachowanie wydawało się identyczne:
BoardSquareView(
style: self.style(for: square),
model: square
)
.gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square)))
.onTapGesture(self.handleUserDidTap(square))
.onTapGesture()
Sprawdź to.
.gesture(TapGesture().onEnded(.......))