Bird
Raised Fist0
iOS Swiftmobile~5 mins

Gesture recognition (drag, magnify, rotate) in iOS Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is gesture recognition in iOS development?
Gesture recognition is the process of detecting and responding to user touch interactions like dragging, pinching to zoom (magnify), and rotating on the screen.
Click to reveal answer
beginner
Which UIKit class is used to detect drag gestures?
UIPanGestureRecognizer is used to detect drag (pan) gestures where the user moves their finger across the screen.
Click to reveal answer
beginner
How does UIPinchGestureRecognizer help in gesture recognition?
UIPinchGestureRecognizer detects pinch gestures, allowing the app to recognize when the user is zooming in or out by moving two fingers closer or farther apart.
Click to reveal answer
beginner
What is the role of UIRotationGestureRecognizer?
UIRotationGestureRecognizer detects rotation gestures, letting the app know when the user rotates two fingers around a point on the screen.
Click to reveal answer
intermediate
How do you add a gesture recognizer to a UIView in Swift?
You create a gesture recognizer instance, set its target and action, then add it to the UIView using addGestureRecognizer(). For example: view.addGestureRecognizer(panGesture).
Click to reveal answer
Which gesture recognizer detects dragging motions?
AUITapGestureRecognizer
BUIPanGestureRecognizer
CUIRotationGestureRecognizer
DUIPinchGestureRecognizer
What does UIPinchGestureRecognizer detect?
APinch to zoom
BRotation
CTap
DSwipe
Which method adds a gesture recognizer to a view?
AaddGesture()
BsetGestureRecognizer()
CattachGesture()
DaddGestureRecognizer()
UIRotationGestureRecognizer detects which type of gesture?
ARotate
BPinch
CDrag
DTap
What is the first step to use a gesture recognizer in Swift?
AOverride the touch methods in UIView
BCall the gesture recognizer's start() method
CCreate the gesture recognizer and set target/action
DAdd gesture recognizer to the storyboard
Explain how to implement drag, magnify, and rotate gestures on a UIView in Swift.
Think about creating recognizers, adding them to the view, and updating the view's transform.
You got /5 concepts.
    Describe the user experience improvements when adding gesture recognition to a mobile app.
    Consider how users interact with touchscreens in real life.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which gesture recognizer in SwiftUI detects a dragging motion on a view?
      easy
      A. MagnificationGesture
      B. RotationGesture
      C. DragGesture
      D. TapGesture

      Solution

      1. Step 1: Understand gesture types

        DragGesture detects dragging motions, MagnificationGesture detects pinch zoom, RotationGesture detects rotation, and TapGesture detects taps.
      2. Step 2: Match gesture to dragging

        Since dragging means moving finger across the screen, DragGesture is the correct recognizer.
      3. Final Answer:

        DragGesture -> Option C
      4. Quick Check:

        DragGesture = dragging motion [OK]
      Hint: DragGesture is for dragging, Magnification for pinch zoom [OK]
      Common Mistakes:
      • Confusing MagnificationGesture with dragging
      • Choosing TapGesture for drag
      • Mixing RotationGesture with drag
      2. Which of the following is the correct syntax to add a rotation gesture recognizer to a SwiftUI view?
      easy
      A. .gesture(RotationGesture().onChanged { angle in /* code */ })
      B. .onTapGesture { /* code */ }
      C. .gesture(DragGesture().onEnded { _ in /* code */ })
      D. .gesture(MagnificationGesture().onChanged { scale in /* code */ })

      Solution

      1. Step 1: Identify rotation gesture syntax

        RotationGesture() is the correct gesture for rotation, and .gesture() modifier adds it to a view.
      2. Step 2: Confirm onChanged closure usage

        onChanged receives the rotation angle, so the syntax .gesture(RotationGesture().onChanged { angle in ... }) is correct.
      3. Final Answer:

        .gesture(RotationGesture().onChanged { angle in /* code */ }) -> Option A
      4. Quick Check:

        RotationGesture syntax = .gesture(RotationGesture().onChanged { angle in /* code */ }) [OK]
      Hint: Use .gesture(RotationGesture().onChanged) for rotation [OK]
      Common Mistakes:
      • Using DragGesture instead of RotationGesture
      • Using .onTapGesture for rotation
      • Confusing MagnificationGesture with rotation
      3. What will be the effect of this SwiftUI code snippet on a view?
      Image("photo")
        .scaleEffect(scale)
        .rotationEffect(angle)
        .offset(dragAmount)
        .gesture(
          DragGesture()
            .onChanged { dragAmount = $0.translation }
            .onEnded { _ in dragAmount = .zero }
        )
        .gesture(
          MagnificationGesture()
            .onChanged { scale = $0 }
        )
        .gesture(
          RotationGesture()
            .onChanged { angle = $0 }
        )
      medium
      A. Only dragging works; zoom and rotation gestures are ignored.
      B. The image can be dragged, zoomed, and rotated by user gestures.
      C. Only zooming works; drag and rotation gestures are ignored.
      D. The image is static and does not respond to gestures.

      Solution

      1. Step 1: Analyze gesture modifiers

        The code adds three gestures: DragGesture updates dragAmount offset, MagnificationGesture updates scale, RotationGesture updates angle.
      2. Step 2: Understand combined effects

        The view applies scaleEffect, rotationEffect, and offset using these state variables, so all gestures affect the image interactively.
      3. Final Answer:

        The image can be dragged, zoomed, and rotated by user gestures. -> Option B
      4. Quick Check:

        All gestures update view transforms = The image can be dragged, zoomed, and rotated by user gestures. [OK]
      Hint: Multiple gestures update scale, rotation, and offset simultaneously [OK]
      Common Mistakes:
      • Assuming only one gesture works at a time
      • Ignoring that gestures update state variables
      • Thinking gestures override each other
      4. Identify the error in this SwiftUI gesture code snippet:
      Circle()
        .gesture(DragGesture().onChanged { value in
          dragAmount = value.translation
        })
        .gesture(MagnificationGesture().onChanged { scale = $0 })
      medium
      A. Only the MagnificationGesture will work; DragGesture is ignored.
      B. Both gestures work correctly without conflict.
      C. The code will cause a compile-time error due to multiple gestures.
      D. DragGesture will override MagnificationGesture, so only drag works.

      Solution

      1. Step 1: Understand gesture modifiers stacking

        Applying multiple .gesture modifiers separately causes only the last one to be active.
      2. Step 2: Identify which gesture is active

        Since MagnificationGesture is added last, it overrides DragGesture, so only magnification works.
      3. Final Answer:

        Only the MagnificationGesture will work; DragGesture is ignored. -> Option A
      4. Quick Check:

        Last .gesture overrides previous = Only the MagnificationGesture will work; DragGesture is ignored. [OK]
      Hint: Multiple .gesture modifiers override; combine gestures with simultaneousGesture [OK]
      Common Mistakes:
      • Assuming both gestures work independently
      • Expecting compile error for multiple gestures
      • Thinking first gesture always wins
      5. You want to allow a user to drag, zoom, and rotate a photo simultaneously in SwiftUI. Which approach correctly combines these gestures so all work together smoothly?
      hard
      A. Use only one gesture recognizer that detects drag, zoom, and rotate at once.
      B. Add three separate .gesture modifiers for each gesture on the view.
      C. Use .gesture for DragGesture and ignore zoom and rotate gestures.
      D. Use .simultaneousGesture to combine DragGesture, MagnificationGesture, and RotationGesture on the view.

      Solution

      1. Step 1: Understand gesture combination in SwiftUI

        Multiple .gesture modifiers override each other, so to combine gestures, use .simultaneousGesture.
      2. Step 2: Apply simultaneousGesture for all three

        By nesting .simultaneousGesture for DragGesture, MagnificationGesture, and RotationGesture, all gestures work together smoothly.
      3. Final Answer:

        Use .simultaneousGesture to combine DragGesture, MagnificationGesture, and RotationGesture on the view. -> Option D
      4. Quick Check:

        Combine gestures with simultaneousGesture = Use .simultaneousGesture to combine DragGesture, MagnificationGesture, and RotationGesture on the view. [OK]
      Hint: Combine gestures with .simultaneousGesture for multi-touch support [OK]
      Common Mistakes:
      • Adding multiple .gesture modifiers separately
      • Expecting one gesture to handle all types
      • Ignoring zoom and rotate gestures
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard