首先:我对可可开发很陌生。我想我的问题很明显。
加载后,我需要知道WebView的大小。对此,我已经找到了答案,但我有一个问题。这是我的相关代码。
应用程序代表:
@implementation MDAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
//set ourselves as the frame load delegate so we know when the window loads
[self.webView setFrameLoadDelegate:self];
// set the request variable, which works and then load the content into the webView
[self.webView.mainFrame loadRequest:request];
}
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)webFrame
{
NSLog(@"webView:didFinishLoadForFrame");
if([webFrame isEqual:[self.webView mainFrame]]) {
// some code ...
// and at some point I want to get the frame property of self.window
NSRect windowFrame = self.window.frame;
}
}
窗口属性在应用程序委托的头文件中定义:
@interface MDAppDelegate : NSObject <NSApplicationDelegate>
@property (weak) IBOutlet MDTransparentWindow *window;
@property (weak) IBOutlet WebView *webView;
@end
我找到了(看起来)一个非常相似的问题的答案。解决方案是#import <QuartzCore/QuartzCore.h>
,并在构建阶段选项卡中链接框架。我这样做了,但问题仍然存在。我还清理了我的项目(到目前为止,我还不知道清理的作用,但有时它会有所帮助),但没有结果。
该窗口是我自己的类TransparentWindow
的一个实例,它是NSWindow
的子类。当我开始在子类实现文件中写入self.f
时,xcode会自动建议使用frame
。但是当我在webView:didFinishLoadForFrame
方法中写入self.window.f
时,这种情况不会发生。
正如我所说,我是可可开发的新手。有什么提示吗,我可能错过了什么?
如果只对类进行前向声明(如),通常会收到此消息
@class MyPhantasticClass;
编译器知道它是一个类,但不知道它的任何方法。您需要包含正确的头文件。