Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Objective c 突出显示NSSearchField_Objective C_Nssearchfield - Fatal编程技术网

Objective c 突出显示NSSearchField

Objective c 突出显示NSSearchField,objective-c,nssearchfield,Objective C,Nssearchfield,我有一个NSView窗口,其中包含一个NSView,仅在某些特定情况下出现此NSView包含一个NSSearchField我想要的如果剪贴板上有数据,它将显示在searchField中,否则它将为空。我能够做到这一点我想要的是,如果searchField中有数据,它应该处于焦点我尝试了以下方法: 在NSViewController类中,有一个函数返回NSSearchField,它是一个类变量 -(NSSearchField*)getSearchField

我有一个NSView窗口,其中包含一个NSView,仅在某些特定情况下出现此NSView包含一个NSSearchField我想要的如果剪贴板上有数据,它将显示在searchField中,否则它将为空。我能够做到这一点我想要的是,如果searchField中有数据,它应该处于焦点我尝试了以下方法:

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

              -(NSSearchField*)getSearchField
                  {
                  return searchField;
                  } 
在NSWindowController类中,我将其作为第一个响应程序,其中pSearchContact是NSViewController类的实例变量

      [[self window] makefirstResponder:[pSearchContact getSearchField]];
它运行平稳,但我不知道为什么searchField没有得到关注

只有当searchField是NSWindow的一部分时,它才会成为第一响应者,因为在我的例子中,searchField位于NSWindow中的NSView中


提前感谢

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

这一行代码:

[[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?" );
}

这可能还允许您缩小焦点设置不适用于您的范围。

延迟响应,但我遇到了一个类似的问题,通过在Xcode/Interface Builder中取消选中
拒绝FirstResponder
,解决了这个问题。

我也尝试了您的代码,但它仍然不起作用。没有一个值为空(MyWindow、pSearchContact和ourSearchField)直到[MyWindow makeFirstResponder:ourSearchField];这意味着它正在将searchField设置为FirstResponder,但我看不到它的焦点。