Swiftui 快捷界面覆盖取消触摸
我有一个按钮,我想把一个半透明的渐变叠加在上面Swiftui 快捷界面覆盖取消触摸,swiftui,Swiftui,我有一个按钮,我想把一个半透明的渐变叠加在上面 Button(action: { print("Pressed") }) { Text("Press me") } .overlay( LinearGradient( gradient: Gradient(colors: [.clear, Color.black.opacity(0.3)]), startPoint: .top, endPoint: .bottom ).disabled(true) ) 即使
Button(action: {
print("Pressed")
}) {
Text("Press me")
}
.overlay(
LinearGradient(
gradient: Gradient(colors: [.clear, Color.black.opacity(0.3)]),
startPoint: .top,
endPoint: .bottom
).disabled(true)
)
即使渐变已禁用(true),它仍然会吃掉触摸,并且不会将触摸转发到实际按钮.allowsHitTesting(false)
提供相同的结果
你知道会出什么问题吗
注意:我知道我可以将叠加设置为文本(“按我”),但我不想要它。(这只是说明问题的示例代码)
编辑:这个问题在Xcode 11.2中得到了解决✅ 以下代码适用于Xcode 11.2/iOS 13.2
struct TestButtonWithOverlay: View {
var body: some View {
Button(action: {
print("Pressed")
}) {
Text("Press me")
.padding()
}
.overlay(
LinearGradient(
gradient: Gradient(colors: [.clear, Color.black.opacity(0.3)]),
startPoint: .top,
endPoint: .bottom
)
.allowsHitTesting(false) // !!! must be exactly here
)
}
}
struct TestButtonWithOverlay_Previews: PreviewProvider {
static var previews: some View {
TestButtonWithOverlay()
}
}
您在按钮前面创建了一个渐变视图,该视图没有用户交互,无法进入按钮。在.overlay之后使用.background或add.ontapsignature代替.overlay。我可以在Xcode 11.2 FWIW中确认这是有效的,当在滚动视图顶部覆盖视图时,这似乎不起作用;用户无法滚动。在文本字段顶部覆盖文本时不起作用。当您点击文本标签时,文本字段永远不会与之交互。