ボタンIBAction
はwindowA呼び出しますrunModalForWindow:windowB
。
windowBがキーとモーダルになります。
windowBstopModal
には表示時に呼び出すpopUpWindowDatePicker があり、 popUpWindowDatePicker がキーになり、 windowBはキーを辞任し、モーダルではありません。この時点ではウィンドウはモーダルではありません。
popUpWindowDatePicker が閉じられると、そのdidResignFirstResponder
メソッドはブール値を YES に設定します。次にwindowBがキーになり、windowBの windowControllerwindowDidBecomeKeyNotification
が起動し、ブール値をチェックし、YES の場合は を呼び出しますrunModalForWindow:self.window
。
現在、windowBはモーダルでキーです。windowAはまだ開いていますが、キーではありません。
windowBには[NSApp stopModalWithCode:returnCode]
、次を呼び出す [ OK ]ボタンと [キャンセル
] ボタンがあります。orderOut:
close
popUpWindowDatePicker が使用され、windowBが OK またはキャンセルで閉じられた後はいつでも、OK またはキャンセル ボタンを含むアサーション エラーが呼び出されます。
*** Assertion failure in -[NSButton lockFocus], /SourceCache/AppKit/AppKit-1038.29/AppKit.subproj/NSView.m:5237
-[NSButton(0x20021cd60) lockFocus] failed with window=0x20021c0c0, windowNumber=-1, [self isHiddenOrHasHiddenAncestor]=0
windowBが Okay または Cancel で閉じられ、 popUpWindowDatePickerが使用されていない場合、アサーション エラーは発生しません。
押されたボタンのlockFocusの失敗には、 windowBのシーケンスが関係しているようですがrunModal-stopModal-runModal-stopModal
、これ以上トレースしてこの問題を解決する方法が見つかりません。
誰でもヒントや考えを提供できますか?