SwiftUI 检测 contextMenu 何时打开

cha*_*l-f 5 ios swift swiftui

@State正如标题所说,当任何上下文菜单打开或特定视图的上下文菜单打开时,有什么方法可以检测(例如使用变量)?

作为一个基本想法,我想打印一些打开的东西。这不起作用:

.contextMenu {
   print("open")
}
Run Code Online (Sandbox Code Playgroud)

这似乎也不起作用:

.contextMenu {
    EmptyView()
    .onAppear {
        print("open")
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能让这个工作成功?


编辑:为什么我认为它甚至有可能做到这一点,或者至少有可能使它看起来像可能:在 Instagram 上,人们只能将单个帖子视为一个正方形。然而,使用长按,会打开一个上下文菜单,现在帖子形状不同了,但更重要的是,上面还有一个小标题.. 如何做到这一点?当上下文菜单打开时,他们是否修改了视图,或者是帖子所在的网格视图,然后才隐藏这些细节(真实的图像形状+图像标题),但它们已经渲染了?

截图:

在此输入图像描述 在此输入图像描述

Asp*_*eri 3

一种可能的方法是使用同步手势来实现此目的,例如

Text("Demo Menu")
    .contextMenu(menuItems: {
        Button("Button") {}
    })
    .simultaneousGesture(LongPressGesture(minimumDuration: 0.5).onEnded { _ in
        print("Opened")
    })
Run Code Online (Sandbox Code Playgroud)

使用 Xcode 13.2 / iOS 15.2 进行测试

  • 如果这应用于“ScrollView”中的元素,您将无法再滚动这些项目。 (4认同)