この 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 では、実行ループと直接対話するコードは見つかりませんでした。
私の質問
- これは、モーダル シートの Web ビューに関する既知の問題ですか?
- 2 つの参考文献で説明されている問題はまだ残っていますか?
- どうすればこれを機能させることができますか? たとえば、ランループモードをいつ切り替えるかわかりません。