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中选择单元格时如何更改按钮名称?