一個按鈕的IBAction
在窗口A調用runModalForWindow:windowB
。如何在退出時使用modalWindow處理NSButton lockFocus上的斷言失敗?
windowB成爲關鍵和模態。
窗口B具有呼籲顯示stopModal
一個popUpWindowDatePicker,然後popUpWindowDatePicker變得關鍵,和窗口B辭職鍵和不是模態。此時沒有窗口是模態的。
當popUpWindowDatePicker被取消時,其didResignFirstResponder
方法將布爾值設置爲YES。 windowB然後成爲關鍵,並且windowB的windowController windowDidBecomeKeyNotification
觸發,檢查布爾值,如果是YES調用runModalForWindow:self.window
。
現在windowB是模態和關鍵。 windowA仍然是開放的,但不是關鍵。
窗口B有好和取消其呼叫按鈕:在窗口B [NSApp stopModalWithCode:returnCode]
然後orderOut:
和close
。
如果使用popUpWindowDatePicker,和然後該窗口B後的任何時間被關閉與好或取消,斷言失敗被稱爲涉及好或取消按鈕:
*** 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
如果窗口B用Okay或Cancel關閉,並且popUpWindowDatePicker尚未使用,則不存在斷言失敗。
似乎在窗口B序列runModal-stopModal-runModal-stopModal
參與lockFocus上按下按鈕時的失敗,但我不能找到一種方法來追蹤比這個更來解決這個問題。
任何人都可以提供任何提示或想法嗎?
「按鈕的方法...」哪一個?按鈕有很多方法,'lockFocus'只是其中的一個。 「...按鈕沒有'lockFocus'設置...」這沒有意義,因爲'lockFocus'是一個動詞,而不是一個屬性。你有沒有試過用調試器打破異常? – 2010-08-03 03:17:44
我編輯了我的問題,以反映我在按下按鈕時指向操作方法,並且在退出時lockFocus不可用。我會盡力打破例外情況,並回報。謝謝。 – lulu 2010-08-03 12:51:00
我已經重新寫了我的問題,以嘗試更清晰。 – lulu 2010-08-11 18:02:49