Определить кнопку закрытия NSWindow

Я работаю над приложением для OS X, где я использую пользовательское окно, которое рисует изображение в качестве фона, включая строку заголовка Отказ Я модифицирую в этом коде , чтобы нарисовать окно, а затем вызов [NSwindow Standardwindowbutton: forstylemask:] Чтобы получить стандартные кнопки закрытия, минимизировать и максимизировать кнопки.

Проблема в том, что мое приложение использует NspoPavers, и когда я закрываю или минимизирую приложение, пока открывается запасы, он закроет пление или показывает анимацию покрытия для минимизации поверхности, а анимация замыкает. Есть ли способ переопределить по умолчанию закрыть / минимизировать поведение в Nswindow, чтобы сначала уволить любые открытые часы?

Спасибо, и извините, если это очевидный вопрос - это мой первый раз, работающий с ОС X SDK, так У меня нет большого опыта.

Отредактируйте: Через несколько часов после того, как я опубликовал эту, я подумал, что у меня есть очевидный раствор - используйте методы NswindowDelegate «WindowWilloseLose:» и «WindowWillminiaturize:» и уволить тампола. Тем не менее, кажется, что, поскольку кнопки закрытия / минимизации закрывают запасы, что если закрывается запачка, эти методы делегата не будут вызваны. Это возвращает меня к шагу 1, но, надеюсь, зная, что поведение поможет кому-то выяснить проблему.

Есть также еще одна проблема с NSPOPOSS, и я не знаю, подключен ли она или нет, поэтому я подумал, что добавлю его здесь, на всякий случай, если было общее дело. Иногда, когда я пытаюсь уволить поповерту, я получу эту ошибку (для контекста, я нажав nsbutton, который вызывает функцию, которая проверяет наличие запаса, и если она существует, закрывает его):

2011-08-30 11:24:08.949 Playground[11194:707] *** Assertion failure in +[NSView _findFirstKeyViewInDirection:forKeyLoopGroupingView:], /SourceCache/AppKit/AppKit-1138/AppKit.subproj/NSView.m:11026
2011-08-30 11:24:08.950 Playground[11194:707] this method is supposed to only be invoked on top level items
2011-08-30 11:24:08.958 Playground[11194:707] (
     0   CoreFoundation                      0x00007fff873d4986 __exceptionPreprocess + 198
     1   libobjc.A.dylib                     0x00007fff87ac6d5e objc_exception_throw + 43
     2   CoreFoundation                      0x00007fff873d47ba +[NSException raise:format:arguments:] + 106
     3   Foundation                          0x00007fff8950314f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 169
     4   AppKit                              0x00007fff88211064 +[NSView _findFirstKeyViewInDirection:forKeyLoopGroupingView:] + 137
     5   AppKit                              0x00007fff87d1f546 _replacementKeyViewAlongKeyViewPath + 565
     6   AppKit                              0x00007fff87d1f2ff -[NSView nextValidKeyView] + 179
     7   AppKit                              0x00007fff87d1f199 -[NSWindow _selectFirstKeyView] + 714
     8   AppKit                              0x00007fff882361cf _NSWindowRecursiveFindFirstResponder + 164
     9   AppKit                              0x00007fff882395c8 _NSWindowExchange + 79
     10  AppKit                              0x00007fff883a7e3a -[_NSWindowTransformAnimation startAnimation] + 426
     11  AppKit                              0x00007fff87c98bb2 -[NSWindow _doOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 592
     12  AppKit                              0x00007fff87c9890f -[NSWindow orderWindow:relativeTo:] + 154
     13  AppKit                              0x00007fff883dfaf0 _NSPopoverCloseAndAnimate + 948
     14  Playground                          0x00000001000078a4 -[MainWindowController dismissPopover:] + 100
     15  Playgorund                          0x0000000100007012 -[MainWindowController requestWasClicked:] + 98
     16  CoreFoundation                      0x00007fff873c411d -[NSObject performSelector:withObject:] + 61
     17  AppKit                              0x00007fff87ca2852 -[NSApplication sendAction:to:from:] + 139
     18  AppKit                              0x00007fff87ca2784 -[NSControl sendAction:to:] + 88
     19  AppKit                              0x00007fff87ca26af -[NSCell _sendActionFrom:] + 137
     20  AppKit                              0x00007fff87ca1b7a -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2014
     21  AppKit                              0x00007fff87d2157c -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 489
     22  AppKit                              0x00007fff87ca0786 -[NSControl mouseDown:] + 786
     23  AppKit                              0x00007fff87c6b66e -[NSWindow sendEvent:] + 6280
     24  AppKit                              0x00007fff87c03f19 -[NSApplication sendEvent:] + 5665
     25  AppKit                              0x00007fff87b9a42b -[NSApplication run] + 548
     26  AppKit                              0x00007fff87e1852a NSApplicationMain + 867
     27  Playground                          0x0000000100001c52 main + 34
     28  Playground                          0x0000000100001c24 start + 52
     29  ???                                 0x0000000000000001 0x0 + 1
)

5
задан Aaron 30 August 2011 в 16:29
поделиться