In the world of mobile application design, user interaction is the cornerstone of an intuitive and memorable experience. Among the myriad of gestures users deploy, the long-press stands out. It’s subtle, yet when executed, reveals a depth of functionality that might not be immediately apparent. Think of it as the “easter egg” of touch interactions, providing users with hidden treasures that await their discovery. SwiftUI, Apple’s innovative UI toolkit, offers an effortless way to incorporate such gestures. In this guide, we’ll embark on a journey to unravel the magic of the long-press gesture, demonstrating its implementation using SwiftUI. Ready to elevate your app’s user experience to new heights? Dive in!

Long-Press Gesture in SwiftUI: A Detailed Walkthrough

Long-press gestures are a fascinating touch interaction seen in many mobile apps. This gesture triggers an action or effect when a user holds down on a specific item or screen area for a certain duration. Let’s delve into the magic of the long-press gesture, specifically in the context of SwiftUI. In this comprehensive guide, readers will learn to alter the color of a circle using a two-second long press.


To get started with SwiftUI:

  1. Ensure you’re using Xcode 11 or later;
  2. Your operating system should be MacOS Catalina or a later version;
  3. All the required software can be obtained from the Apple Developer Portal;
  4. Setting up the Project;
  5. Launch Xcode: Start by firing up Xcode;
  6. If greeted by the startup window, select “Create a new Xcode project.”;
  7. Alternatively, navigate to File > New > Project;
  8. Template Selection: Follow the steps below;
  9. Choose iOS as the platform;
  10. Opt for the Single View App template;
  11. Proceed by clicking “Next.”

Naming & Configurations:

  1. Name the project SwiftUILongPressGestureTutorial;
  2. Under User Interface, select SwiftUI;
  3. Click “Next” and decide where to save your project on your Mac;
  4. Structuring the Interface;
  5. Canvas Interaction: The canvas gives a visual representation of the app’s interface;
  6. To view it, hit “Resume.”;
  7. If the canvas is hidden, go to Editor > Editor and Canvas;
  8. Editing ContentView.swift: This file holds the primary interface code;
  9. Navigate to ContentView.swift in the Project navigator;
  10. Modify the existing code inside the ContentView struct.
struct ContentView: View {
    // Variable to manage circle's color
    @State var circleColor = Color.yellow
    var body: some View {
        // Drawing a circle
        .frame(width: 200, height: 200, alignment: .center)
        // Implementing the long press gesture
        .gesture(LongPressGesture(minimumDuration: 2)
        .onEnded { _ in
            if self.circleColor == .yellow {
                self.circleColor = .red
            } else {
                self.circleColor = .yellow
  • Here, @State var circleColor manages the circle’s current color;
  • The Circle() view displays a yellow circle by default;
  • The long-press gesture is added using .gesture(…). Once a two-second press is detected, the circle’s color toggles between yellow and red.

Testing the Gesture

Live Preview:

  1. Go to the preview canvas;
  2. Initiate the “Live Preview” mode.

Interact with the Circle:

  1. Engage in a two-second long press on the circle;
  2. Marvel as its color transforms!

Tips & Insights

  • Long-press gestures can enhance app interactivity and provide shortcuts to users;
  • Adjusting the minimumDuration can make the gesture more sensitive or deliberate based on user needs;
  • Consider using haptic feedback in conjunction with long-press gestures for a more tactile user experience.

With this walkthrough, readers should now be equipped to harness the potential of long-press gestures in SwiftUI, giving their apps a touch of sophistication and fluidity.


In conclusion, long-press gestures are a valuable asset in the toolkit of any SwiftUI developer aiming to craft engaging and user-friendly applications. They open doors to innovative design possibilities, encourage exploration, and ultimately, create a more dynamic and interactive user interface. So, take the knowledge gained here, and venture forth, infusing your applications with gestures that bring both functionality and a touch of magic to the user experience.

Leave a Reply