如何解决 SwiftUI Tap 冲突?

Posted

技术标签:

【中文标题】如何解决 SwiftUI Tap 冲突?【英文标题】:How to resolve SwiftUI Tap Conflict? 【发布时间】:2020-07-16 01:16:03 【问题描述】:

当我使用 SwiftUI 制作视图时,我无法使点击事件工作。 我的代码如下:

                    VStack
                        HStack
                            //SomeView...
                        
                        .onTapGesture 
                            print("HStack Tap Work")
                        
                    
                    .onTapGesture 
                        print("VStack Tap Work")
                    

当我点击 VStack 的其他区域(期望 HStack)时,我只想打印“VStack Tap Work”,当我点击 HStack 时打印“HStack Tap Work”。

但它总是打印“VStack Tap Work”。那么我该如何解决呢?

【问题讨论】:

【参考方案1】:

处理顺序可能取决于实际视图层次结构(因为堆栈通常围绕内容紧密),因此请尝试按优先级分隔手势,例如

HStack 
    //SomeView...
.highPriorityGesture(TapGesture().onEnded  // high priority !!
    print("HStack Tap Works")
)

【讨论】:

以上是关于如何解决 SwiftUI Tap 冲突?的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序-双击长按longtap事件与tap事件冲突的解决办法

Swiftui 如何在 foreach 循环中对整行使用 Tap Gesture

解决poppicker 和上拉加载冲突

如何解决“SwiftUI 无法更新预览”问题?

如何修复 SwiftUI 中的 navigationTitle 和工具栏之间的布局冲突?

在 SwiftUI 中滚动时,许多项目列表崩溃,我该如何解决?