我正在创建一个工具提示系统。
如果用户触摸工具提示之外的任何位置,我想关闭工具提示。
我希望这样在工具提示之外的触摸既可以消除工具提示,又可以激活用户点击的任何控件。(因此,您可以打开一个工具提示,然后仍然单击工具提示外部的按钮,并在第一次点击时激活它。)
为此,我有一个不可见的视图来处理点击手势并消除工具提示,但我不知道如何使 SwiftUI 不拦截并取消点击手势。在网络上,这相当于在 UIKit 中event.stopPropagation()不调用andevent.preventDefault()或调用 super intouchesBegan:。
有任何想法吗?
Asp*_*eri 16
这是可能方法的演示。使用 Xcode 11.4 / iOS 13.4 进行测试
struct ContentView: View {
var body: some View {
VStack {
Button("Button") { print("> button tapped")}
}
.frame(width: 200, height: 200)
.contentShape(Rectangle()) // makes all area tappable
.simultaneousGesture(TapGesture().onEnded({
print(">>> tooltip area here")
}))
.border(Color.red) // just for demo show area
}
}
Run Code Online (Sandbox Code Playgroud)
你需要使用这个修饰符:
.allowsHitTesting(false)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7879 次 |
| 最近记录: |