界面构建器:确定哪个元素具有初始焦点

4

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

我该如何去掉焦点环?我希望在窗口首次显示时没有任何控件获得焦点。

2个回答

3

该窗口具有initialFirstResponder绑定,显示窗口激活时将处于活动状态的控件。更改initialFirstResponder或在界面构建器中调整tableview设置以隐藏焦点环。


我检查了一下,窗口没有设置initialFirstResponder。在表格视图中,如何设置隐藏聚焦环? - Mark
它在视图设置部分,略低于表格视图设置。 - Eimantas
找到了。我怎么会错过这个呢?谢谢! - Mark
2
@Mark:请注意,隐藏焦点环并不意味着它没有焦点。当它获得焦点时,应该有一个焦点环,根据您的应用程序,表视图最初应该具有焦点。如果它真的不应该具有焦点,请将初始第一响应者出口设置为另一个视图。(当未设置时,窗口会自动选择一个。) - Peter Hosey
@PeterHosey 感谢您的提醒!我已经按照您的建议将初始第一响应者设置为另一个视图。 - Mark

0
我找到的阻止任何控件在窗口首次显示时成为第一响应者的最佳方法是在窗口控制器中实现: 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)
        }
    }

}

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接