Swiftui 快速识别鼠标悬停

Swiftui 快速识别鼠标悬停,swiftui,mouse,Swiftui,Mouse,对于Mac Catalyst上的UIKit(很快在iOS 13.4中支持触摸板的iPadOS上),我们可以使用UIHoverGestureRecognitor来监听鼠标悬停事件并相应地调整视图。在macOS上的AppKit上,有用于跟踪鼠标光标的NSTrackingArea 我似乎找不到一种方法来识别SwiftUI中的悬停手势。在SwiftUI文档页面中,只支持点击、长按、拖动、放大(缩放)和旋转。没有鼠标悬停的迹象 有人有办法做到这一点吗 答案最好在iOS应用程序(带UIHostingCont

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

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

有人有办法做到这一点吗


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

苹果刚刚在iOS 13.4旁边发布了这个问题的答案

只需使用:

SomeView()
    .onHover { hover in
        print("Mouse hover: \(hover)")
        // Do something else
    }
用您的视图替换
SomeView
,就这样

注意:由于此API来自iOS 13.4,您不能在面向13.0的应用程序上使用此API(或者您巧妙地使用了
if
语句)


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

当我在macOS 11中的图像上悬停时,这似乎对我没有任何帮助。