You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:19:49