对于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,但我错过了:((