我遇到的问题与this SO question类似。我想在NSSheet中有一个webview,我在其中进行一些身份验证以检索API令牌。
我使用相应的xib文件创建了一个新的NSWindowController
子类。这就是我启动NSSheet的方式:
- (IBAction)startAuthentication:(NSButton *)sender {
self.authController = [[AuthenticationWindowController alloc] initWithWindowNibName:@"AuthenticationWindow"];
[[NSApplication sharedApplication] beginSheet:self.authController.window
modalForWindow:[self.exportManager window]
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo:nil];
}
在这个authenticationWindowController的windowDidLoad回调中,我将webview指向URL:
- (void)windowDidLoad
{
[super windowDidLoad];
[[self.webView mainFrame]loadRequest:[NSURLRequest requestWithURL:authURL]];
}
乍一看看起来很棒:如果我按下按钮,则调用startAuthentication
操作方法,并将新窗口设置为父窗口的动画并加载authURL。网站正确显示,其HTML表单包含两个输入字段(用户名和密码)。
问题是,我可以单击页面并且它可以正常工作,但是如果我尝试单击一个文本字段,以便该字段获得焦点则不起作用。网站表单的文本字段中没有光标,每次按键后我都会听到NSBeep()声音。
我对这个主题做了一些研究,我发现了两个参考文献:
让我感到困惑的是,有Facebook Exporter for Aperture插件,它可以准确显示我想要的内容:模态表中的webview。但是,我无法找出他们的不同之处。在Facebook Exporter中,我没有找到任何直接与run循环交互的代码。
我的问题
答案 0 :(得分:3)
这没有一般问题,我只是再试一次。除了这个必须是一些代码?你能把它缩小到表格吗?顺便说一句:我的样本:
https://dl.dropbox.com/u/3753090/test2.zip
但是所有这一切,模态运行模式和webviews / timers / networking都不是很防水:) 因为:当您通过NSApp中的一种便捷方法进入模态时,runloop仅以非常有限的方式运行。 :/