SwiftUI识别鼠标悬停



对于Mac Catalyst上的UIKit(以及即将在iOS 13.4中支持触控板的iPadOS上(,我们可以使用UIHoverGestureRecognizer来监听鼠标悬停事件并相应地调整视图。在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,但我错过了:((

最新更新