2017-07-29 36 views
1

重命名文件:NSOpenPanel总是试图我使用的是<code>NSOpenPanel</code>让用户选择一个文件,像这样的点击

NSOpenPanel *openPanel = [[NSOpenPanel alloc] init]; 
    openPanel.canChooseFiles = YES; 
    openPanel.allowsMultipleSelection = NO; 
    openPanel.canChooseDirectories = NO; 
    openPanel.allowedFileTypes = @[@"mov", @"mp4"]; 
    openPanel.allowsOtherFileTypes = NO; 

    [openPanel beginWithCompletionHandler:^(NSInteger result) { 
     if (result == NSFileHandlingPanelOKButton) { 
      [self.editorWindowController loadVideoWithUrl:openPanel.URL]; 
     } 

    }]; 

一切都很正常,唯一的问题是,当你点击一个文件时,光标被设置为文本编辑模式,所以它会尝试重命名该文件。点击其他地方,否则选择正常的行。谢谢

+0

我做了一个新的Cocoa程序,增加了一个NSButton,并迷上了其作用的方式运行该代码(除了'editorWindowController'的一部分,因为你没有提供),我不能重现你的问题。什么版本的OS X和Xcode?你有[MCVE](https://stackoverflow.com/help/mcve)吗? – Ssswift

+0

感谢您抽出时间@Ssswift。这就是所有正在执行的代码,从菜单栏File> Open。 – user339946

+0

忘了提及有一些意见,有他们自己的鼠标光标,但不知道他们为什么会干涉NSOpenPanel – user339946

回答

2

这个问题很简单,但很难找到。我有如下一段这是影响所有NSTableViews代码:

extension NSTableView { 

    override open func validateProposedFirstResponder(_ responder: NSResponder, for event: NSEvent?) -> Bool { 
     return true 
    } 
} 
相关问题