Loading...

How to change the cursor to a hand when hovering over a Link View in SwiftUI?

question swiftui
Ram Patra Published on October 13, 2023
import SwiftUI

extension Link {
    func pointingHandCursor() -> some View {
        self.onHover { inside in
            if inside {
                NSCursor.pointingHand.set()
            } else {
                NSCursor.arrow.set()
            }
        }
    }
}

In this code, we’ve created an extension for Link called pointingHandCursor() that sets the cursor behavior. You can use this extension to apply the cursor change to any Link in your SwiftUI views, making it more convenient to use in your app like below:

Link(destination: URL(string: "https://www.example.com")!) {
    Text("Visit Example.com")
}
.pointingHandCursor() // Use the extension to set the cursor to a hand
Presentify

Take your presentation to the next level.

FaceScreen

Put your face and name on your screen.

KeyScreen

Show keypresses on your screen.

ToDoBar

Your to-dos on your menu bar.

SimpleFill

Fill forms using your right-click menu.

IconSim

Preview your Mac app icons.

Ram Patra Published on October 13, 2023
Image placeholder

Keep reading

If this article was helpful, others might be too

question swiftui swift September 30, 2023 How to open the Settings view in a SwiftUI app on macOS 14.0 (Sonoma)?

In macOS 14.0 (Sonoma), Apple removed support for NSApp.sendAction to open the Settings view in your SwiftUI app. You now have to use SettingsLink like below:

question swiftui macos September 4, 2024 How to execute some code before app termination in a macOS app using SwiftUI?

To run some code before app termination in a macOS app using SwiftUI, the correct approach would involve placing the termination logic within a view, such as the ContentView. Here’s how you can do it:

question swiftui macos June 7, 2025 How to change the accent colour of a macOS app in SwiftUI?

To change the accent color of a SwiftUI macOS app, you can do it in any of the following ways:

Like my work?

Please, feel free to reach out. I would be more than happy to chat.