Swift UI 列表:点击单元格时打开外部 URL

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

// 编辑:

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

【讨论】:

【参考方案2】:

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

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

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

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

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

【讨论】:

如果有人想使用onTapGesture,这确实是一个很好的解决方案。我仍然会使用单个 Button 作为容器,从那时起我根本不需要指定可点击的形状。会投票,但仍然会提出问题,因为我认为这两种解决方案都很有趣。

以上是关于Swift UI 列表:点击单元格时打开外部 URL的主要内容,如果未能解决你的问题,请参考以下文章

Swift UICollectionView 工作奇怪,只注册第二次点击

使用swift 3点击单元格时如何在Avplayer中播放来自url的视频

Xcode UI 在点击单元格时测试 XCTDaemonErrorDomain Code=13

swift - 在UITableView中选择单元格时如何更改按钮名称?

uitableviewcell 在点击 swift 时打开 url

点击该单元格时,如何访问 uicollectionviewcell 内标签的文本属性? (迅速)