【问题标题】:Swift UI List: Open external URL when cell is tappedSwift UI 列表:点击单元格时打开外部 URL
【发布时间】:2019-09-22 10:54:15
【问题描述】:

List 的单元格之一被点击时,我正在尝试打开URL。我尝试将修饰符onTapGesture 添加到单元格本身,然后调用UIApplication.shared.open(url),但这仅在点击正确在单元格视图的元素上(而不是在单元格的背景上)时才有效。

我还尝试将背景视图(矩形)添加到不透明度为 0.01 的单元格中,但尽管这样可行,但尽管不透明度很低,但矩形仍然非常明显。

是否有任何解决方法可以使整行可点击?

【问题讨论】:

    标签: ios swiftui swiftui-list


    【解决方案1】:

    找到了解决方案,以防将来对任何人有所帮助:

    // 编辑:

    使用单个Button,在操作闭包中使用所需的操作(即openURL),并在label 闭包中返回我的自定义视图。

    【讨论】:

      【解决方案2】:

      @stakri,你要找的是“.contentShape()”

      Rectangle()
          .stroke()
          .onTapGesture() {
              UIApplication.shared.open(URL(string: "https://stackoverflow.com")!)
          }
      

      上面的代码只有在你点击矩形的'stroke'轮廓时才会起作用,但是 .contentShape() 将使整个区域都可以点击,而无需将其嵌套在 Stack 中:

      Rectangle()
          .stroke()
          .contentShape( Rectangle() )
          .onTapGesture() {
              UIApplication.shared.open(URL(string: "https://stackoverflow.com")!)
          }
      

      其他回答此问题的人可能会寻找如何专门打开 URL,您会注意到我强制打开了我的 URL。对此开放反馈,但除非提出任何问题,否则效果很好。

      【讨论】:

      • 如果有人想使用onTapGesture,这确实是一个很好的解决方案。我仍然会使用单个 Button 作为容器,从那时起我根本不需要指定可点击的形状。会投票,但仍然会提出问题,因为我认为这两种解决方案都很有趣。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 2015-04-13
      • 2022-10-02
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多