我有一个由NSView组成的NSWindow,它只在一些特定的场合出现,这个NSView由一个我想要的NSSearchField组成,如果剪贴板上有数据,它就会出现在searchField中,否则它就会是空的。我可以做到这一点。我想要的是,如果SearchField中有数据,它应该在焦点上。我试过这样:
在NSViewController类中,有一个函数返回NSSearchField,它是一个类变量
-(NSSearchField*)getSearchField
{
return searchField;
} 在NSWindowController类中,我将其设为第一响应器,其中pSearchContact是NSViewController类的实例变量
[[self window] makefirstResponder:[pSearchContact getSearchField]];它运行得很顺利,但我不知道为什么searchField没有得到关注
只有当它是NSWindow的一部分时,像searchField这样的东西才会成为第一响应者,因为在我的例子中,searchField在NSView中,而在NSWindow中。
提前感谢
发布于 2012-07-04 13:47:48
你的问题有点令人困惑,但我认为你的问题可以归结为“为什么我永远不能让我的搜索域成为焦点?”
这一行代码:
[[self window] makefirstResponder:[pSearchContact getSearchField]];对我来说有点太多了(也就是说,我不会在一行代码中嵌入这么多功能-任何可能出错或混乱的部分)。
这样做怎么样:
NSWindow * myWindow = [self window];
if(myWindow)
{
if(pSearchContact)
{
NSResponder * ourSearchField = [pSearchContact getSearchField];
if(ourSearchField)
{
[myWindow makeFirstResponder: ourSearchField];
} else {
NSLog( @"ourSearchfield is nil; why?" );
}
} else {
NSLog( @"pSearchContact is nil; why?" );
}
} else {
NSLog( @"myWindow is nil; why?" );
}这也可以让你缩小为什么焦点设置对你不起作用。
发布于 2015-10-15 01:55:16
一个延迟响应,但我遇到了类似的问题,通过在Xcode/Interface Builder中取消选中refusesFirstResponder修复了这个问题。
https://stackoverflow.com/questions/11322932
复制相似问题