2010-08-21 140 views
5

如何檢測用戶在不使用NSWindowDidResizeNotification的情況下點擊NSWindow上的綠色最大化或縮放(+)按鈕?如何檢測NSWindow最大化或縮放事件?

我不想使用NSWindowDidResizeNotification的原因是因爲用戶點擊並拖動手動調整窗口大小時也會重複觸發。我有一些我想要執行的代碼,當用戶放大解除縮放窗口使用左上角的綠色按鈕而不是手動調整窗口大小時,應該只觸發一次。

回答

9

這兩個窗口的委託方法可能是有用的:

- windowWillUseStandardFrame:defaultFrame: 
- windowShouldZoom:toFrame: 

您也可以考慮繼承NSWindow和重寫zoom:方法。

+0

就是這樣!我窮人的解決方法是在NSWindowWillStartLiveResizeNotification上創建BOOL標誌「windowIsResizing」並將其設置爲「YES」,並在NSWindowWillEndLiveResizeNotification上將其設置爲「YES」。然後在WindowDidResize通知中,我做了「if(!windowIsResizing)...」,並且當手動調整窗口大小時,這將防止多次觸發我只想執行一次的代碼,只會在用戶按下縮放按鈕。但是這樣好多了,謝謝! – EagleOfToledo 2010-08-21 04:39:18

0

@EagleOfToledo,根據你的問題和託德Yandell的回答您的意見,我想你只需要此委託方法:

斯威夫特

optional func windowDidEndLiveResize(_ notification: NSNotification) 

Objective-C的

- (void)windowDidEndLiveResize:(NSNotification *)notification 

無論您單擊縮放按鈕還是手動調整大小,此方法都只會被調用一次。