NSView作为NSWindow.contentView子视图时失去交互的问题求助
NSView作为NSWindow.contentView子视图时失去交互的问题求助
大家好,我最近碰到一个头疼的问题:我的NSView完全没法响应鼠标事件和交互了,具体情况如下:
- 如果把这个NSView直接设置为NSWindow的
contentView,一切正常,鼠标交互都能正常触发; - 但要是把它添加为默认NSWindow.contentView的子视图,就彻底没法交互了,鼠标点击之类的操作完全没反应。
我必须用第二种方案,因为我的NSView尺寸比NSWindow小,需要把它居中放在窗口里,所以得借助默认的contentView作为中间容器来添加约束布局。
下面是能复现问题的代码示例:
import Cocoa import SwiftUI import AppKit struct MyView: View { var body: some View { Rectangle() .frame(width: 300, height: 300) .onTapGesture { print("Clicked me baby, one more time!") } .background(.red) } } class AppDelegate: NSObject, NSApplicationDelegate { func applicationDidFinishLaunching(_ aNotification: Notification) { let window = NSWindow() let view = NSHostingView(rootView: MyView()) view.setFrameOrigin(NSPoint(x: 50,y: 50)) let wrapperView = NSView() wrapperView.addSubview(view) window.contentView?.addSubview(wrapperView) // <-- 这种方式没法交互 //window.contentView = wrapperView // <-- 这种方式正常工作 window.makeKeyAndOrderFront(nil) window.setIsVisible(true) } }
有没有大佬能帮忙分析下问题出在哪?感谢各位的帮助!
备注:内容来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

