为什么SwiftUI不在RoundedRectangle的背景上注册我的点击?

为什么SwiftUI不在RoundedRectangle的背景上注册我的点击?,swiftui,Swiftui,我想尝试这段向下的代码,看看SwiftUI是否理解RoundedRectangle和Rectangle之间的区别,因此我运行了这段代码,SwiftUI可以告诉我屏幕背景点击和矩形点击之间的区别,但它无法理解RoundedRectangle本身和RoundedRectangle(矩形)的背景之间的区别 我怎样才能解决这个问题 目标:我想在点击时获得白色区域的打印,以及红色和黄色区域的打印。 struct ContentView: View { var body: some View {

我想尝试这段向下的代码,看看SwiftUI是否理解RoundedRectangle和Rectangle之间的区别,因此我运行了这段代码,SwiftUI可以告诉我屏幕背景点击和矩形点击之间的区别,但它无法理解RoundedRectangle本身和RoundedRectangle(矩形)的背景之间的区别

我怎样才能解决这个问题

目标:我想在点击时获得白色区域的打印,以及红色和黄色区域的打印。

struct ContentView: View {
    var body: some View {

        ZStack {
            
            Color.red
                .ignoresSafeArea()
                .onTapGesture{ print("you tapped on Screen Background! This looks like a bug indeed.

As a workaround you can use a custom shape, e.g.
RoundedCorner
taken from here:

struct RoundedCorner: Shape {
    var radius: CGFloat = .infinity
    var corners: UIRectCorner = .allCorners

    func path(in rect: CGRect) -> Path {
        let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        return Path(path.cgPath)
    }
}
struct ContentView:View{
var body:一些观点{
ZStack{
颜色:红色
.ignoresSafeArea()

.ontapposition{print(“您点击了屏幕背景!这看起来确实像一个bug

作为解决方法,您可以使用自定义形状,例如取自以下位置的
RoundedCorner

然后,它将按预期工作:

struct ContentView:View{
var body:一些观点{
ZStack{
颜色:红色
.ignoresSafeArea()

.ontapposition{print(“您点击了屏幕背景!这看起来确实像一个bug

作为解决方法,您可以使用自定义形状,例如取自以下位置的
RoundedCorner

然后,它将按预期工作:

struct ContentView:View{
var body:一些观点{
ZStack{
颜色:红色
.ignoresSafeArea()

.ontaps{print("你点击了屏幕背景!玩了一点之后,我开始认为这是一个SwiftUI错误,不幸的是。我也是,我花了很多时间在上面,我甚至用颜色填充了这个矩形。清晰,我用ZStack在说话的矩形的背景中画了白色和黄色区域!但是在它们之间,我不明白,它可以画c没错,但我无法理解尊重!哈哈,新的一天,SwiftUI的新Bug。玩了一会儿,我开始认为这是一个SwiftUI Bug,不幸的是。我也是,我花了很多时间,我甚至用颜色填充了这个长方形。清晰,我用ZStack在说话长方形的背景中绘制了白色和黄色区域!但是fai引导他们之间的理解,它可以正确地绘制,但不能理解尊重!哈哈,新的一天,SwiftUI的新错误。这太棒了!谢谢。还有一件事,你可以在ContentView中将白色作为形状的背景色,它也可以工作!但是你完成了工作!谢谢again@mimi我更新了我的答案。谢谢!太好了!如果您尝试我的第一个圆代码,它将完全工作没有问题,但我不知道RoundedRectangle会发生什么,这是一个问题,我尝试在RoundedRectangle上剪裁和其他东西,但您什么都不知道。@mimi是的,我检查过它是否正确地用于
,但不正确地用于大多数其他形状,like
Rectangle().拐角半径(90)
圆形伸缩角
胶囊
…看起来这只是另一个SwiftUI错误。我建议您将解决方案发送给苹果团队,他们可以使用其他形状的代码来解决抽头问题。但您应该做出决定。这太棒了!谢谢。还有一件事您可以将白色作为中形状的背景色ContentView,它也会工作!但是你完成了工作!谢谢again@mimi我更新了我的答案。谢谢!太完美了!如果你用Circle尝试我的第一个代码,它会很好地工作没有问题,但我不知道RoundedRectangle会发生什么,这是一个问题,我尝试在RoundedRectangle上剪辑和其他东西,但正如你所知,我不知道ng.@mimi是的,我已经检查过它是否能正确地处理
,但不能正确地处理大多数其他形状,如
矩形()。拐角半径(90)
圆形伸缩角
胶囊
…看起来这只是另一个SwiftUI错误。我建议您将解决方案发送给苹果团队,他们可以使用您的代码来解决其他形状的抽头问题。但您应该做出决定。