Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 界面生成器:确定哪个元素具有初始焦点_Cocoa_Interface Builder - Fatal编程技术网

Cocoa 界面生成器:确定哪个元素具有初始焦点

Cocoa 界面生成器:确定哪个元素具有初始焦点,cocoa,interface-builder,Cocoa,Interface Builder,我有一个Cocoa应用程序,带有一个表视图和一些其他控件。当应用程序启动并显示窗口时,会在表格视图周围绘制一个蓝色的焦点环 我怎样才能摆脱那个聚焦环?当窗口第一次显示时,我不希望有焦点。该窗口具有initialFirstResponder绑定,该绑定显示当窗口变为活动时哪个控件将处于活动状态。在interface builder中更改initialFirstResponder或调整tableview设置以隐藏聚焦环我发现,在第一次显示窗口时,阻止任何控件成为第一响应者的最佳方法是在窗口控制器中:

我有一个Cocoa应用程序,带有一个表视图和一些其他控件。当应用程序启动并显示窗口时,会在表格视图周围绘制一个蓝色的焦点环


我怎样才能摆脱那个聚焦环?当窗口第一次显示时,我不希望有焦点。

该窗口具有initialFirstResponder绑定,该绑定显示当窗口变为活动时哪个控件将处于活动状态。在interface builder中更改initialFirstResponder或调整tableview设置以隐藏聚焦环

我发现,在第一次显示窗口时,阻止任何控件成为第一响应者的最佳方法是在窗口控制器中:

Swift 3:

class YourWindowController: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()

        // Wait a frame before setting the first responder to be the window itself.
        // We can't just set it right now, because if the first responder is set
        // to the window now the system just interprets that as meaning that we
        // want the default behavior where it automatically selects a view to be
        // the first responder.
        DispatchQueue.main.async {
            window!.makeFirstResponder(nil)
        }
    }

}

这很混乱,有时当窗口加载时,你会看到焦点环开始出现在一帧的某个控件上,但我还没有找到更好的方法。

我检查过,窗口没有初始FirstResponder设置。表视图中隐藏聚焦环的设置在哪里?它在视图的设置部分,略低于表视图设置。找到了。我怎么会错过这个?谢谢@马克:请注意,隐藏焦点环并不意味着它没有焦点。当它有焦点时,它应该有一个焦点环,并且根据你的应用程序,表视图最初很有可能有焦点。如果确实不应该,请将初始第一响应器出口设置为不同的视图。(未设置时,窗口将自动拾取一个。)@PeterHosey谢谢提醒!正如您所建议的,我已将最初的第一响应者设置为另一个视图。