请教下大佬们, swiftUI 菜单栏应用 onHover 事件触发问题

2022-07-10 10:45:05 +08:00
 storyxc

刚学习 swift 和 swiftUI 不久,目前在试着用 swiftUI 做一个纯菜单栏的 todolist 工具。现在调界面的时候碰到个问题:点击图标弹出应用后,子视图上 TodoRowView 的 onHover 事件无法触发,必须要点击一下弹出的这块区域才可以,请教下这个问题的解决办法,不胜感激🙏

主视图结构大概是

struct HomeView: View {
    var body: some View {
        VStack {
            CustomSegmentedControl()
            
            ScrollView {
                TodoRowView()
                TodoRowView()
                TodoRowView()
            }
            HStack {
                xxxx..
            }
        }
    }
}

问题如下:

7814 次点击
所在节点    iDev
6 条回复
lizhiqing
2022-07-10 11:04:54 +08:00
撞头像了
storyxc
2022-07-10 11:10:38 +08:00
@lizhiqing #1 我记得我之前也因为头像回过你的帖子 😄
andyJado
2022-07-10 12:44:13 +08:00
1. 把 ScrollVIew 宕掉 //, 然后看看好不好使.

2.建议亲把 onHover 逻辑剥离出来放到 HomeView 里.
shoujiaxin
2022-07-10 13:51:24 +08:00
popover 弹出的时候调用一下 NSApp.activate(ignoringOtherApps: true)
storyxc
2022-07-10 14:34:56 +08:00
@andyJado #3 感谢回复,我试过这么做但是没有效果


@shoujiaxin #4 感谢大佬!把这个加进去确实能解决正文中的问题。但是后来又发现个点击 popover 以外的区域时 popover 不会自动关闭的问题,我找到 youtube 上说调整 popover.contentViewController?.view.window?.makeKey()这行代码位置的回复,尝试之后这两个问题都解决了。 无论如何还是非常感谢!
justin2018
2022-07-10 17:57:21 +08:00
Learn SwiftUI - Kavsoft

https://kavsoft.dev/

他的课程不错 实战挺好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865223

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX