사용자가 SwiftUI에서 Circle의 모든 프레임 내부가 아닌 원을 탭하는 경우에만 onTapGesture가 작동하도록하려면 어떻게해야합니까? [복제]
Dec 05 2020
Circle에서 사용자의 탭을 읽는 데이 다운 코드를 사용하고 있습니다. 문제는 100X100 프레임의 모든 부분에서 작동하지만 색상이 채워진 Circle에서만 작동 할 것으로 예상합니다. 어떻게이 문제를 해결할 수 있습니까?
struct ContentView: View {
var body: some View {
Circle()
.fill(Color.red)
.frame(width: 100, height: 100, alignment: .center)
.onTapGesture {
print("tap")
}
}
}
답변
nicksarno Dec 06 2020 at 04:08
원에 배경 레이어를 추가 한 다음 (100 % 투명 할 수 없거나 렌더링되지 않으므로 투명도를 0.0001로 설정하여 선명하게 표시) 해당 레이어에 다른 tapGesture를 추가하는 것이 좋습니다. 새로운 제스처는 백그라운드 영역에서 우선권을 갖게되며 아무 일도 일어나지 않도록 조치없이 그대로 둘 수 있습니다.
Circle()
.fill(Color.red)
.frame(width: 100, height: 100, alignment: .center)
.background(
Color.black.opacity(0.0001).onTapGesture { }
)
.onTapGesture {
print("tap")
}