Objective c 在模式NSSheet中使用Webview

Objective c 在模式NSSheet中使用Webview,objective-c,macos,webkit,Objective C,Macos,Webkit,我有一个类似的问题。我希望在NSSheet中有一个webview,我在其中执行一些身份验证以检索API令牌 我用相应的xib文件创建了一个新的NSWindowController子类。以下是我开始NSSheet的方式: - (IBAction)startAuthentication:(NSButton *)sender { self.authController = [[AuthenticationWindowController alloc] initWithWindowNibName

我有一个类似的问题。我希望在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()的声音

我对这个主题做了一些研究,发现了两个参考文献:

让我困惑的是有一个插件,它正好显示了我想要的东西:一个模式表中的webview。然而,我无法找出他们的不同之处。在Facebook Exporter中,我没有发现任何与运行循环直接交互的代码

我的问题

  • 这是模态工作表中Web视图的已知问题吗
  • 两个参考文献中解释的问题是否仍然存在
  • 我怎样才能让它工作?例如,我不知道何时切换runloop模式

  • 这没有什么大问题,我只是试了一下。除此之外一定还有代码?你能把范围缩小到床单吗?顺便说一句:我的样本:


    尽管如此,模态运行模式和网络视图/定时器/网络并不是很防水:)
    因为:当您通过NSApp中的一种方便方法进入模态时,runloop仅以非常有限的方式运行:/

    这回答了1和2,但还没有回答3——请提供一个我们可以修复的示例项目:D它在这里工作。。。而且可能与工作表无关!?我刚刚做了一个样本项目。这是一个Aperture exporter插件,所以我不确定插件窗口本身是否在模式下以runloop运行。然而,极简主义的例子似乎是可行的。我还在调查。好的,现在它起作用了。我所做的只是删除XIB并从头开始。非常感谢您的调查。