首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >突出显示NSSearchField

突出显示NSSearchField
EN

Stack Overflow用户
提问于 2012-07-04 13:33:01
回答 2查看 287关注 0票数 0

我有一个由NSView组成的NSWindow,它只在一些特定的场合出现,这个NSView由一个我想要的NSSearchField组成,如果剪贴板上有数据,它就会出现在searchField中,否则它就会是空的。我可以做到这一点。我想要的是,如果SearchField中有数据,它应该在焦点上。我试过这样:

在NSViewController类中,有一个函数返回NSSearchField,它是一个类变量

代码语言:javascript
复制
              -(NSSearchField*)getSearchField
                  {
                  return searchField;
                  } 

在NSWindowController类中,我将其设为第一响应器,其中pSearchContact是NSViewController类的实例变量

代码语言:javascript
复制
      [[self window] makefirstResponder:[pSearchContact getSearchField]];

它运行得很顺利,但我不知道为什么searchField没有得到关注

只有当它是NSWindow的一部分时,像searchField这样的东西才会成为第一响应者,因为在我的例子中,searchField在NSView中,而在NSWindow中。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-04 13:47:48

你的问题有点令人困惑,但我认为你的问题可以归结为“为什么我永远不能让我的搜索域成为焦点?”

这一行代码:

代码语言:javascript
复制
[[self window] makefirstResponder:[pSearchContact getSearchField]];

对我来说有点太多了(也就是说,我不会在一行代码中嵌入这么多功能-任何可能出错或混乱的部分)。

这样做怎么样:

代码语言:javascript
复制
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?" );
}

这也可以让你缩小为什么焦点设置对你不起作用。

票数 0
EN

Stack Overflow用户

发布于 2015-10-15 01:55:16

一个延迟响应,但我遇到了类似的问题,通过在Xcode/Interface Builder中取消选中refusesFirstResponder修复了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11322932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档