SwiftUI 检测 contextMenu 何时打开
Posted
技术标签:
【中文标题】SwiftUI 检测 contextMenu 何时打开【英文标题】:SwiftUI detect when contextMenu is open 【发布时间】:2021-11-09 20:24:22 【问题描述】:正如标题所说,当任何上下文菜单打开或特定视图的上下文菜单打开时,我有什么方法可以检测到(例如,使用 @State
变量)?
作为一个基本想法,如果它是打开的,我想打印一些东西。这不起作用:
.contextMenu
print("open")
这似乎也不起作用:
.contextMenu
EmptyView()
.onAppear
print("open")
我怎样才能做到这一点?
编辑: 为什么我认为它甚至可以做到,或者至少可以让它看起来有可能:在 Instagram 上,人们只能将单个帖子视为一个正方形。但是长按会打开一个上下文菜单,现在帖子形状不一样了,而且上面还有一个小标题..怎么做呢?他们是否在上下文菜单打开时修改了视图,或者是在隐藏这些细节(真实图像形状 + 图像标题)之前帖子所在的网格视图,但它们已经呈现?
截图:
【问题讨论】:
引用 Instagram 为什么你认为它是标准的上下文菜单,为什么你认为它是 SwiftUI ......你不应该回答 - 只是想想。 【参考方案1】:一种可能的方法是为此目的使用同时手势,例如
Text("Demo Menu")
.contextMenu(menuItems:
Button("Button")
)
.simultaneousGesture(LongPressGesture(minimumDuration: 0.5).onEnded _ in
print("Opened")
)
使用 Xcode 13.2 / ios 15.2 测试
【讨论】:
从技术上讲,您的示例似乎正在执行我在示例中显示的内容(即打印某些内容),但是我也可以使用simultaneousGesture
更改上下文菜单中显示的视图吗?跨度>
以上是关于SwiftUI 检测 contextMenu 何时打开的主要内容,如果未能解决你的问题,请参考以下文章
检测用户何时停止/暂停在 TextField 中写入 - SwiftUI
SwiftUI 检测视图何时不可见(有点视图会消失)并停止发布者