macos – 如何将自定义NSView添加到Window

macos – 如何将自定义NSView添加到Window,第1张

概述我知道如何在iOS中做到这一点,但无法在 Cocoa中找到它. 我想捕获键盘事件,我想我需要覆盖acceptFirstResponder方法来实现它(触发keyDown方法).所以我创建了一个扩展NSCustomView的类,并试图在主窗口中添加它,但我无法理解如何做到这一点.到目前为止,我在主视图中添加了一个自定义视图,然后尝试以编程方式添加它: TestView *view = [[TestV 我知道如何在iOS中做到这一点,但无法在 Cocoa中找到它.

我想捕获键盘事件,我想我需要覆盖acceptFirstResponder方法来实现它(触发keyDown方法).所以我创建了一个扩展NSCustomVIEw的类,并试图在主窗口中添加它,但我无法理解如何做到这一点.到目前为止,我在主视图中添加了一个自定义视图,然后尝试以编程方式添加它:

TestVIEw *vIEw = [[TestVIEw alloc] init];[[_window contentVIEw] addSubvIEw:vIEw];

但这不起作用.那我该怎么做呢?

解决方法 要查看视图是否已添加到窗口,您可以覆盖视图的vIEwDIDMovetoWindow方法并记录[self window]的值以进行检查(如果它是nil,则视图已从窗口中删除):

- (voID)vIEwDIDMovetoWindow{    NSLog(@"window=%p",[self window]);    [super vIEwDIDMovetoWindow];}

您应该是NSVIEw的子类,而不是NSCustomVIEw,而initWithFrame是NSVIEw的指定初始化程序,而不是init.

尝试:

TestVIEw *vIEw = [[TestVIEw alloc] initWithFrame:NSMakeRect(0,100,200)];[[_window contentVIEw] addSubvIEw:vIEw];
总结

以上是内存溢出为你收集整理的macos – 如何将自定义NSView添加到Window全部内容,希望文章能够帮你解决macos – 如何将自定义NSView添加到Window所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存