How to make an entire view clickable in SwiftUI

Add a frame modifier with maxWidth and maxHeight to .infinity followed by a contentShape(Rectangle()) modifier.

Oscar de la Hera Gomez
Written by Oscar de la Hera Gomez
First published on 08/30/2024 at 12:13
Last Updated on 08/30/2024 at 13:46
<p>Two flowers that represents SwiftUI and XCode side by side with the text “Make whole view tappable” beneath it.</p>

Add a frame modifier with maxWidth and maxHeight to .infinity followed by a contentShape(Rectangle()) modifier.

Subscribe

The following solution resolves the issue by which a tap gesture only registers on content within a view (i.e. a VStack or a HStack).

<p>A screenshot of XCode showing the solution for a ZStack, VStack and Single View.</p>

The solution is demonstrated via three versions:

  • As a Single View.
  • Within a Zstack.
  • Within a VStack.

The code for the demonstration can be found at the tutorials/ui/basics/tap-whole-view branch of our open source tutorial linked below.

View Repository

Looking to learn more about SwiftUI, Swift, Design and Technology?

Search our blog to learn more about Swift, SwiftUI, design and technology.

Search our Blog

Any Questions?

We are actively looking for feedback on how to improve this resource. Please send us a note to inquiries@delasign.com with any thoughts or feedback you may have.
SubscribeContact UsVisit our BlogView our ServicesView our Work

Partner with us

We would love to get to know you and see how we can help your organization with its goals and needs.
Let's Talk

Stay Informed

Get occasional updates about our company, research, and product launches.
Subscribe