Swift解决Spacer()无法点击问题
Swift解决Spacer()无法点击问题

Swift解决Spacer()无法点击问题

在Swift当中,当我们的一个内容区域存在Spacer()时,我们无法点击Spacer()来实现具体的某个功能。

在上图当中,我们可以看到我们给一个VStack区域添加了onTapGesture(),通过点击该VStack区域会实现sendEmail()函数。

当我们尝试点击上图的Spacer()时,我们无法来调用sendEmail函数。

问题原因在于,我们是通过onTapGesture实现捕获点击动作并执行相关代码,但是VStack中的内容布局(包括Spacer())不会自动扩展VStack的点击区域,默认只在内容区域有效。

因此,当我们尝试点击Spacer()所在的区域时并不会触发点击事件。因为这些区域可能会被认为是非Stack内的空白区域。

解决方案为需要设置contentShape(Rectangle())扩展点击区域:

VStack{
    ...
}
.contentShape(Rectangle())
.onTapGesture {
    sendEmail()
}

通过使用contentShape(Rectangle())创建一个矩形区域,覆盖整个VStack的布局区域,无论VStack内是否含有Spacer(),都会将VStack看作一个整体的点击区域。

因此我们就可以解决该问题。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注