0
我從boost C++創建的線程調用NSOpenPanel。來自C++ boost線程的NSOpenPanel
面板的行爲不正常,對鼠標響應不好,即單擊對象時點擊最高級別組合框確實會提高響應時不會執行任何操作。
我要運行一個單獨的runloop我正在做一個runModalForDirectory應該照顧運行自己的循環。
我也創建了一個單獨的objc類,它執行SelectorOnMainThread在主線程中顯示面板,但仍然行爲相同。
[ps performSelectorOnMainThread:@selector(showOpenPanel) withObject:nil
waitUntilDone:YES
modes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
我也嘗試了waitUntilDone:NO,並且運行CFRunLoopRunInMode,這也沒有幫助。
- (bool) showOpenPanel
{
NSOpenPanel *op = [NSOpenPanel openPanel];
[op setAllowsMultipleSelection:YES];
[op setTitle:@"Choose File"];
[op setMessage:@"Choose file for Importing."];
[op setFloatingPanel:true];
bool result =[op runModalForDirectory:NSHomeDirectory() file:nil types:self.fileTypes];
if (result == NSOKButton) {
[self setSelectedFiles:[op filenames]];
[self setLastShowResult:true];
}
else {
[self setLastShowResult:false];
}
[self setPanelIsDone:true];
return self.lastShowResult;
}
編輯顯示代碼 – user549164 2010-12-20 21:44:46
接受youranswer我已經得到這個與我發佈的代碼一起工作。 – user549164 2010-12-23 00:59:57