1

この SO questionに似た問題があります。API トークンを取得するために認証を行っている NSSheet に webview が必要です。

NSWindowController対応する xib ファイルを使用して新しいサブクラスを作成しました。これは私が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 コールバックで、Web ビューを URL に向けています。

- (void)windowDidLoad
{
    [super windowDidLoad];
    [[self.webView mainFrame]loadRequest:[NSURLRequest requestWithURL:authURL]];
}

ボタンを押すと、startAuthenticationアクション メソッドが呼び出され、新しいウィンドウが親ウィンドウにアニメーション化され、authURL が読み込まれます。Web サイトは、2 つの入力フィールド (ユーザー名とパスワード) を含む HTML フォームで正しく表示されます。

問題は、ページをクリックして機能することですが、1 つのテキストフィールドをクリックしようとすると、このフィールドにフォーカスが移って機能しません。Web サイトのフォームのテキスト フィールドにカーソルが表示されず、キーを押すたびに NSBeep() の音が聞こえます。

このトピックについていくつかの調査を行ったところ、2 つの参考文献が見つかりました。

Apertureプラグイン用の Facebook Exporterがあり、これは私が望むものを正確に示しています。しかし、私は彼らが何を異なって作っているかを見つけることができません. Facebook Exporter では、実行ループと直接対話するコードは見つかりませんでした。

私の質問

  1. これは、モーダル シートの Web ビューに関する既知の問題ですか?
  2. 2 つの参考文献で説明されている問題はまだ残っていますか?
  3. どうすればこれを機能させることができますか? たとえば、ランループモードをいつ切り替えるかわかりません。
4

1 に答える 1

3

これには一般的な問題はなく、もう一度試してみました。これ以外のコードである必要がありますか?シートに絞り込めますか?ところで:私のサンプル:

https://dl.dropbox.com/u/3753090/test2.zip


しかし、モーダルな runmode と webviews/timers/networking はあまり防水ではありません :) 理由: NSApp の便利なメソッドの 1 つを介してモーダルにすると、runloop は非常に限られた方法でしか実行されません。:/

于 2013-03-16T22:00:59.790 に答える