У меня возникла проблема, сходная с this SO question. Я хотел бы иметь webview в NSSheet, в котором я делаю некоторую аутентификацию, чтобы получить токен API.Использование Webview в модальном NSSheet
Я создал новый подкласс 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];
}
В windowDidLoad обратного вызова этого authenticationWindowController я направляющим WebView к адресу:
- (void)windowDidLoad
{
[super windowDidLoad];
[[self.webView mainFrame]loadRequest:[NSURLRequest requestWithURL:authURL]];
}
Она великолепно выглядит на первый взгляд: если нажать , вызывается метод действия startAuthentication
и новое окно анимируется в родительском окне и загружается authURL. Веб-сайт отображается правильно с его формой HTML, содержащей два поля ввода (имя пользователя и пароль).
Проблема в том, что я могу щелкнуть по странице, и она работает, однако, если я пытаюсь щелкнуть по одному текстовому полю, чтобы это поле фокусировалось, оно не работает. В текстовом поле формы сайта курсор не отображается, и после каждого нажатия клавиши я слышу звук NSBeep().
Я сделал некоторые исследования по этой теме, и я нашел две ссылки:
Какие головоломки меня, что есть Facebook Exporter for Aperture плагин, который показывает точно что я хочу: веб-просмотр в модальном листе. Однако я не могу понять, что они делают по-другому. В Facebook Exporter я не нашел никакого кода, взаимодействующего с циклами запуска напрямую.
Мои вопросы
- Это известная проблема с webviews в модальных листов?
- Являются ли проблемы, объясненные в двух ссылках еще там?
- Как я могу заставить это работать? Я не понимаю, когда, например, переключать режим runloop.
это ответы 1 и, возможно, 2, но еще не 3 - plz предоставляют образец проекта, который мы можем исправить: D Он просто работает здесь ... и это может быть не связано с листом !? –
Я только что сделал образец проекта. Это плагин для экспорта Aperture, поэтому я не был уверен, что само окно плагина запускается в runloop в модальном режиме. Однако, похоже, работает минималистический образец. Я все еще расследую. – GorillaPatch
ОК - Теперь это работает.Все, что я сделал, это удалить XIB и запустить XIB с нуля. Очень большое спасибо, глядя в нее. – GorillaPatch