首先让我说这是我的第一个真正的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开发背景。
答案 0 :(得分:9)
如this answer中所述,没有标题或调整大小栏的窗口(包括无边框窗口)无法成为关键窗口。
你是否正确覆盖-canBecomeKeyWindow
,但你错过了正确的地方。您不应该在您的应用程序委托中执行此操作。您需要创建一个NSWindow
子类,然后重写该方法。
答案 1 :(得分:3)
这个苹果示例代码应该为您提供所需的信息,它很容易改变它的工作方式并将其更改为您自己绘制的NSWindow(没有边框:D)
http://developer.apple.com/library/mac/#samplecode/RoundTransparentWindow/Introduction/Intro.html