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