点击列表项的空白处没有任何反应,为啥?
Posted
技术标签:
【中文标题】点击列表项的空白处没有任何反应,为啥?【英文标题】:Nothing happened when tap blank space of the list item, why?点击列表项的空白处没有任何反应,为什么? 【发布时间】:2020-02-18 07:40:57 【问题描述】:当我点击列表项的任何地方时,我只想做点什么。
点击item的Text()是可以的,但是当我点击item的空白处时,什么都没有发生,为什么?
struct ItemView: View
var body: some View
HStack
Text("Hello")
Spacer()
Text("world")
struct ListView: View
var body: some View
List()
ForEach((1...10).reversed(), id: \.self) index in
ItemView().onTapGesture
print("item \(index) taped")
-=-=-= 我做了一些实验,它们太奇怪了!!! 如果点击文本 hello,则打印“hello”; 如果点击空白区域,则打印“世界”; 如果点击文本世界,则打印“item 0”;
struct ItemView: View
var body: some View
HStack
Text("Hello").onTapGesture
print("hello tapped")
Spacer()
Button(action:
print("world tapped")
)
Text("world")
struct ListView: View
var body: some View
List()
ForEach((1...10).reversed(), id: \.self) index in
ItemView().onTapGesture
print("item \(index) taped")
【问题讨论】:
【参考方案1】:将背景修饰符添加到您的 ItemView 与不透明度
struct ContentView: View
var body: some View
List()
ForEach((1...10).reversed(), id: \.self) index in
ItemView()
.background(Color.gray.opacity(0.001))
.onTapGesture
print("item \(index) taped")
【讨论】:
感谢@Mac3n,它有效。但我只是想知道为什么它们在 swiftui 中如此奇怪。 我认为在 SwiftUI 中,Spacer 只是那个间距,而不是可以与之交互的视图。但是是的,这很奇怪【参考方案2】:使用contentShape(_:eoFill:)
修饰符
【讨论】:
你能说明这在问题的解决方案中是如何工作的吗? 请不要只发布一些工具或库作为答案。至少在答案本身中展示how it solves the problem。 我的回答很完整 这是一个完整的答案吗?在放弃之前,我花了十五分钟试图弄清楚如何使用它。一个完整的答案会告诉你在哪里放置方法调用以及调用它的参数,这两者都没有。 我链接到 Apple 文档;我给出了方法和使用它的权威链接。在我看来,这是完整的,但如果它没有帮助你,那就没有帮助。以上是关于点击列表项的空白处没有任何反应,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
问题描述:鼠标右键点击桌面空白处不反应或者反应很慢 右键点击图标没有问题