【问题标题】:NavigationLink touch areaNavigationLink 触控区
【发布时间】:2021-08-03 21:38:12
【问题描述】:

我正在尝试在List 中使用NavigationLink。由于特定原因,它位于.backgroundEmptyView()

var body: some View {
    List {
        Section {
            HStack {
                Image(systemName: "checkmark")
                    .frame(width: 30, height: 30, alignment: .center)
                    .opacity(selected ? 1 : 0)
                Text("TEST")
                Spacer()
            }
            .onTapGesture {
                selected.toggle()
            }
            .background(
                NavigationLink(destination: WifiView()) { EmptyView() }
                    .disabled(isPad)
            )
        }
    }
}

问题是NavigationLink 的触控区域不符合预期。

.background的区域如上。

NavigationLinkEmptyView 的区域如上。我试图用.frame 强制框架,但它不会改变。

我错过了什么?

【问题讨论】:

  • 空视图意味着没有可点击的内容。把你想点击的东西放在你有空视图的地方
  • 与其他视图列表文本的结果相同。
  • 可能是因为你有我。背景也是隐藏在后面的链接

标签: swiftui swiftui-navigationlink


【解决方案1】:

试试这样的东西,对我很有效:

var body: some View {
    List {
        Section {
            HStack {
                Image(systemName: "checkmark")
                    .frame(width: 30, height: 30, alignment: .center)
                    .opacity(selected ? 1 : 0)
                Text("TEST")
                Spacer()
            }
                .contentShape(Rectangle())  // <--- here
                .onTapGesture {
                    selected.toggle()
                }
                .background(
                    NavigationLink(destination: WifiView()) { EmptyView() }
                        .disabled(isPad)
                )
        }
    }
}

【讨论】:

  • 谢谢。它并没有真正解决问题,但帮助我找到了正确的答案。这是两个问题的组合,contentShape 修复了一个。
猜你喜欢
  • 2022-10-14
  • 1970-01-01
  • 2015-10-21
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多