有没有办法强制NSOpenPanel关闭,这样我可以在调试时看到屏幕?在调试时我无法在Xcode中看到它背后的代码,我也无法移动面板。
这就是我所拥有的:
- (IBAction)openImage:(id)sender {
NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"jpg", @"JPG", nil];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setAllowsMultipleSelection:NO];
[panel setAllowedFileTypes:fileTypes];
[panel beginWithCompletionHandler:^(NSInteger result) {
if (result == NSFileHandlingPanelOKButton) {
self.image = [[NSImage alloc] initWithContentsOfURL:panel.URL];
[panel close];
[self doSomethingWithImage];
}else{
}
}];
}
- (void) doSomethingWithImage {
// if I put a breakpoint here,
// the NSOpenPanel is still on the screen and I can't move it.
}
答案 0 :(得分:1)
一个简单的解决方法是在主队列上安排-doSomethingWithImage
,以便在执行[panel beginWithCompletionHandler:^(NSInteger result) {
if (result == NSFileHandlingPanelOKButton) {
self.image = [[NSImage alloc] initWithContentsOfURL:panel.URL];
[panel close];
dispatch_async(dispatch_get_main_queue(), { () -> Void in
[self doSomethingWithImage];
});
}else{
}
}];
之前完成处理程序(并关闭对话框)。
def create_zip_file(targetDirectory, projectToZip)
semver_contents = get_contents_of('SEMVER')
zipFileName = "#{targetDirectory}/#{projectToZip}.#{semver_contents}.zip"
filesToZip = FileList["../#{projectToZip}/bin/#{BUILD_CONFIG}/**"]
Zip::File.open(zipFileName, Zip::File::CREATE) do |zipFile|
filesToZip.each do |filename|
zipFile.add(filename, filename)
end
end
end
答案 1 :(得分:1)
我个人发现了两种方法:
如果您启动应用,请将应用或Xcode
移至其他桌面。因此,当您运行应用时,当您到达断点并且打开的面板不会妨碍Xcode
时,它会跳转到另一个桌面(Xcode
所在的位置)。
使用beginSheetModalForWindow
:编码几乎相同,但在调试时面板不会隐藏Xcode
的部分内容。 OpenPanel
作为与窗口相关的选择面板运行。对于beginSheetModalForWindow
,您必须指明相关窗口(通常是主窗口),这是唯一需要的额外编码。