相关疑难解决方法(0)

SwiftUI 菜单 - 菜单实际打开时的操作

我的应用程序中有一个菜单,当菜单打开时(通过onTagGesture操作)我会触发触觉反馈。

然而, 有时当我点击菜单打开触发器时,菜单实际上不会打开,但我仍然收到触觉反馈。我只在菜单实际打开时才需要触觉。

这是代码简化的代码块:

Menu {
    Button("Menu button", action: someAction}}
} label: { 
    Text("Open menu") //in reality, this a more complicated view tapping on which should open the (context) menu
}
.onTagGesture {
  let generator = UIImpactFeedbackGenerator(style: .rigid)
  generator.impactOccurred()
}
Run Code Online (Sandbox Code Playgroud)

所以它非常简单 - 点击触发器Open menu,点击被注册,触觉被回放,菜单打开。

但如前所述,无论出于何种原因,有时我按下该Open menu元素,触觉会回放,但实际菜单不会打开。

无论出于何种原因,我想知道一旦菜单实际打开(或者更好的是,实际打开),是否有任何方法可以执行操作(例如前面提到的触觉反馈)?我试图尽可能地寻找,但一无所获。

这也很重要,因为菜单也需要长按才能打开,这是打开菜单的 iOS 标准操作。即使我可以为长按添加另一个单独的处理程序(为两种情况提供触觉),但这似乎根本不是一个正确的方法。

结合有时菜单无法打开的事实,我似乎确实需要一些其他解决方案。任何人都可以分享任何想法吗?我是否缺少某种 onXXXXX 处理程序,该处理程序会在菜单打开时触发?

谢谢!

PS:为了提供更多细节,我正在尝试对 Apple 开发文档中描述的菜单实现这种方法: https: //developer.apple.com/documentation/swiftui/menu

作为该过程的一部分,我尝试将 onAppear 处理程序附加到整个菜单以及菜单内的单个元素。似乎两者都不起作用。

Menu {
    Button("Open in Preview", action: openInPreview) …
Run Code Online (Sandbox Code Playgroud)

menu haptic-feedback swiftui

17
推荐指数
2
解决办法
4557
查看次数

SwiftUI 检测 contextMenu 何时打开

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

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

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

这似乎也不起作用:

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

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


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

截图:

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

ios swift swiftui

5
推荐指数
1
解决办法
2266
查看次数

标签 统计

swiftui ×2

haptic-feedback ×1

ios ×1

menu ×1

swift ×1