2012-01-11 21 views
1

をしようとしたとき、私は働くタイミングの問題NSWindowのkeyWindow

[window makeKeyAndOrderFront:self]; 
[NSApp activateIgnoringOtherApps:YES]; 
[window setIsVisible:YES]; 
[window display]; 

を呼び出すことによって、私のメインウィンドウを示しているが、これは呼び出した直後のキーのウィンドウにウィンドウを設定しません。私は[NSApp keyWindow]が実際のwindowを返すまで「ある時間」待たなければならない。

これはどれくらいの時間がかかりますか、どのようにしてウィンドウをすぐにキーウィンドウにすることができますか?

答えて

0

私は、makeKeyAndOrderFrontが同期呼び出しではない、つまり複数のウィンドウとオブジェクトに関連している可能性があります。NSApplicationは、ウィンドウがすぐにキーになるように強制する必要があるという理由が考えられます。おそらくCocoaではサポートされていません。これは解決しようとしている問題によっては問題ではないかもしれません。

私の推測では、あなたのメソッドのいくつかは、ウィンドウがキーに依存しており、現時点ではウィンドウがkeyにすぐにならないため、正しく実行されていないということです。ただし、NSWindowDelegateプロトコルを実装し、ウィンドウデリゲートとして自分自身を設定し、ウィンドウがキーになったときには- (void)windowDidBecomeKey:(NSNotification *)notificationメソッドをオーバーライドすることができます。これはまた、あなたにとってうまくいく場合に備えて、グローバルな通知でなければなりません。詳細については

http://developer.apple.com/library/mac/#documentation/cocoa/reference/NSWindowDelegate_Protocol/Reference/Reference.html

+0

この作品での通知を聞くためにヒントのおかげでリンゴのドキュメントをチェックしてください! – brutella

関連する問題