2013-03-16 3 views
1

У меня возникла проблема, сходная с 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 я не нашел никакого кода, взаимодействующего с циклами запуска напрямую.

Мои вопросы

  1. Это известная проблема с webviews в модальных листов?
  2. Являются ли проблемы, объясненные в двух ссылках еще там?
  3. Как я могу заставить это работать? Я не понимаю, когда, например, переключать режим runloop.

ответ

3

нет общей проблемы с этим, и я просто попробовал его снова. должен быть некоторый код, кроме этого? можете ли вы сузить его до листа? Кстати: мой пример:

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


НО все, что сказал, модальный RunMode и webviews/Таймеры/сеть разве очень водонепроницаемый :) потому что: когда вы идете модальность через один из удобных методов в NSApp , runloop работает только очень ограниченным образом. :/

+0

это ответы 1 и, возможно, 2, но еще не 3 - plz предоставляют образец проекта, который мы можем исправить: D Он просто работает здесь ... и это может быть не связано с листом !? –

+0

Я только что сделал образец проекта. Это плагин для экспорта Aperture, поэтому я не был уверен, что само окно плагина запускается в runloop в модальном режиме. Однако, похоже, работает минималистический образец. Я все еще расследую. – GorillaPatch

+0

ОК - Теперь это работает.Все, что я сделал, это удалить XIB и запустить XIB с нуля. Очень большое спасибо, глядя в нее. – GorillaPatch

Смежные вопросы