SwiftUI 识别鼠标悬停

SwiftUI Recognize mouse hover

对于 Mac Catalyst 上的 UIKit(以及即将在 iOS 13.4 中支持触控板的 iPadOS),我们可以使用 UIHoverGestureRecognizer 来监听鼠标悬停事件并相应地调整视图。在 macOS 上的 AppKit 上有 NSTrackingArea 用于跟踪鼠标光标。

我似乎找不到一种方法来识别 SwiftUI 中的悬停手势。在 SwiftUI 文档的 Gestures 页面中,仅支持点击、长按、拖动、放大(缩放)和旋转。没有鼠标悬停的迹象。

有人有办法做到这一点吗?

答案最好 运行 在 iOS 应用程序(带有 UIHostingController 的 UIKit)和 macOS 应用程序(带有 NSHostingController 的 AppKit)

Apple 刚刚发布了这个问题的答案 iOS 13.4!

只需使用:

SomeView()
    .onHover { hover in
        print("Mouse hover: \(hover)")
        // Do something else
    }

用您的观点替换SomeView,就是这样!

注意: 因为这个 API 来自 iOS 13.4,你不能在针对 13.0 的应用程序上使用它(或者你巧妙地使用了if 语句)

更新: 看起来这在 macOS 上一直有效(所以不必专门针对 10.15.4,但我错过了它:( )