如何在Objective-C Cocoa中创建自定义无边框NSWindow?

如何在Objective-C Cocoa中创建自定义无边框NSWindow?,第1张

概述首先让我说这是我的第一个真正的 Cocoa应用程序.这是一个简单的应用程序,几乎在无边框窗口中显示我的网站.我正在创建无边框窗口的方式是使用以下方法: - (void) awakeFromNib { [window setStyleMask:NSBorderlessWindowMask]; [window setAcceptsMouseMovedEvents:YES]; [ 首先让我说这是我的第一个真正的 Cocoa应用程序.这是一个简单的应用程序,几乎在无边框窗口中显示我的网站.我正在创建无边框窗口的方式是使用以下方法:

- (voID) awakeFromNib {    [window setStyleMask:NSborderlessWindowMask];    [window setAcceptsMouseMovedEvents:YES];    [window setMovableByWindowBackground:YES];    [window setLevel:NSnormalWindowLevel];}

这样做的问题在于,窗口中的WebVIEw不会将鼠标悬停在已加载页面上的元素上,也不会提供键入文本字段的功能.我知道我应该创建一个自定义窗口,然后将contentVIEw移动到它中,但我对Objective-C来说太新了,无法弄清楚如何.

我也试过宣布所有这些没有运气:

@implementation specikAppDelegate@synthesize window;@synthesize webVIEw;- (BOol) canBecomeKeyWindow { return YES; }- (BOol) canBecomeMainWindow { return YES; }- (BOol) acceptsFirstResponder { return YES; }- (BOol) becomeFirstResponder { return YES; }- (BOol) resignFirstResponder { return YES; }...@end

另外,我希望能够通过点击并拖动它来移动窗口,但这是一个想法.我在网上广泛搜索过,找不到解决方法.

我的.h文件的内容(以防万一):

@interface specikAppDelegate : NSObject <NSApplicationDelegate> {    IBOutlet NSWindow *window;    IBOutlet WebVIEw *webVIEw;}@property (assign) IBOutlet NSWindow *window;@property (nonatomic,retain) IBOutlet WebVIEw *webVIEw;- (IBAction)openAboutPanel:(ID)sender;@end

任何帮助将不胜感激,就像我说的,我是Objective-C和Cocoa世界的新手,但我确实来自PHP开发背景.

解决方法 如 this answer中所述,没有标题或调整大小栏(包括无边框窗口)的窗口不能成为关键窗口.

你是正确的覆盖–canBecomeKeyWindow,但你错过了正确的地方.您不应该在您的应用程序委托中执行此 *** 作.您需要创建一个NSWindow子类,然后重写该方法.

总结

以上是内存溢出为你收集整理的如何在Objective-C Cocoa中创建自定义无边框NSWindow?全部内容,希望文章能够帮你解决如何在Objective-C Cocoa中创建自定义无边框NSWindow?所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1007527.html

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

发表评论

登录后才能评论

评论列表(0条)

保存