2

ココアヌーブはこちら。

いくつかの結果をフェッチしてNSTableViewに配置するNSTextFieldを含むシンプルなMacアプリがあります。テキストフィールドで上/下を押して、テーブルビューの最初/最後のアイテムをアクティブにできるようにしたいと思います。

私は次のことをしました:

- (void)keyUp:(NSEvent *)theEvent {
    switch([theEvent keyCode]) {
        case 125: {
            NSLog(@"I need to move down");
            NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:0];
            [resultsTableView selectRowIndexes:indexSet byExtendingSelection:NO];
            [resultsTableView becomeFirstResponder];
            break;
        }
        case 126: {
            NSLog(@"I need to move up");
            NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:[results count]-1];
            [resultsTableView selectRowIndexes:indexSet byExtendingSelection:NO];
            [resultsTableView becomeFirstResponder];
            break;
        }
    }
}

これは部分的に私が欲しいものです。の最初または最後のアイテムはresultsTableView選択されますが、選択されたアイテムはグレー表示されたままになり、テキストビューはアクティブなままになります。

私は、を呼び出すことでうまくいくと思いbecomeFirstResponderましたresultsTableViewが、そうではありませんでした。

どんな助けでも大歓迎です!

4

1 に答える 1

12

becomeFirstResponder直接電話しないでください。NSWindowを使用するmakeFirstResponder:

[[resultsTableView window] makeFirstResponder:resultsTableView];
于 2012-12-09T23:52:56.027 に答える