如何禁用自动TAB更改,只需从代码中执行

时间:2012-05-18 20:03:32

标签: objective-c xcode cocoa

我在view1上放了txt1(NSTextFiled),txt2(NSTextField),tbl1(NSTableView),当光标在txt1时,我按TAB键,光标转到txt2.i想从我推TAB的代码改变它我转到tbl1(tbl1成为第一响应者),然后我将txt1子类化为customtext并在其中实现以下代码

- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector
{
    BOOL result = NO;

    if (commandSelector == @selector(insertTab:))
    {
            [self.delegate performSelector:@selector(pressTAB) withObject:nil ];
    }//if
    . . .
}

我在view1中实现了pressTAB方法,并在下面编写了代码

-(void)pressTAB
{
    [[self.view window] makeFirstResponder:self.tbl1];
}

一切正常,代码正常运行但在此代码运行后,Xcode会自动将第一响应者更改为txt2。如何禁用自动TAB更改并从我的代码中执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以通过设置nextKeyView属性在代码中执行此操作(使用Xcode 4.2,它似乎无法在IB中执行此操作)。所以:

txt1.nextKeyView = tbl1;