我有一個NSOpenPanel,我想在用戶點擊確定之後對選擇進行一些驗證。我的代碼很簡單:在NSOpenPanel關閉後做點什麼
void (^openPanelHandler)(NSInteger) = ^(NSInteger returnCode) {
if (returnCode == NSFileHandlingPanelOKButton) {
// do my validation
[self presentError:error]; // uh oh, something bad happened
}
}
[openPanel beginSheetModalForWindow:[self window]
completionHandler:openPanelHandler];
[self window]
是一個應用程序模式窗口。面板以表格形式打開。到現在爲止還挺好。
Apple的文檔說完成處理程序應該被稱爲「在用戶關閉面板後」。但在我的情況下,它會在「確定/取消」按鈕按下時立即調用,而不是面板關閉。這樣做的效果是錯誤警報在打開面板上方打開,而不是在面板關閉後打開。它仍然有效,但它不像Mac。
我更喜歡用戶點擊確定,打開面板表單摺疊起來,然後然後出現警報單。
我想我可以使用延遲選擇器來顯示警報,但這似乎是一個黑客。