2
可可noob在這裏。使NSTableView生效
我有一個簡單的Mac應用程序,其中包括一個NSTextField,它提取一些結果並將它們放入NSTableView。我希望能夠在文本字段中按下上/下來激活表格視圖中的第一個/最後一個項目。
我已經做了以下內容:
- (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
中的第一個或最後一個項目,但所選項目保持灰顯狀態,並且文本視圖保持活動狀態。
我以爲在resultsTableView
上撥打becomeFirstResponder
就可以做到,但事實並非如此。
任何幫助將不勝感激!
我只是跑成這樣,任何想法,爲什麼我們要通過窗口,而不是響應者自身的電話嗎? –
[因爲蘋果這麼說](https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/NSResponder/ becomeFirstResponder)'becomeFirstResponder'「永遠不要直接調用這個方法。」 – TheAmateurProgrammer