2011-10-28 3 views
0

위/아래 화살표 키에 응답하지 않는 NSTableView가 있습니다. 내 이해에서 응답은 기본 동작이므로 무슨 일이 일어나는지 잘 모르겠습니다 (참고로, 키보드 명령을 무시하지는 않습니다). 내 테이블을 위해 할 수있는 유일한 설정은 다음과 같습니다 NSTableView가 위/아래 화살표 키에 응답하지 않습니다.

[tableView setDoubleAction: @selector(doubleClickedRow)]; 
[tableView setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[tableView registerForDraggedTypes: [NSArray arrayWithObjects: NSFilenamesPboardType, nil]]; 
[tableView setDraggingSourceOperationMask: NSDragOperationCopy forLocal:NO]; 

하지만 내가 말할 수있는 것과

는이 중 어느 것도 문제가 발생하지 않을 것이다.

누구든지이 문제의 근원을 찾을 수있는 제안이 있습니까?

+0

까지이다'펜촉 설정 refusesFirstResponder'의 값이 무엇입니까? – hamstergene

+0

행을 클릭하여 선택할 수 있습니까? 강조 표시됩니까? 내 테이블보기에서, 그것은 내가 위쪽 및 아래쪽 화살표를 사용하여 시작할 수있는 지점입니다. – paulmelnikow

+0

그래, 행을 클릭하여 선택할 수 있습니다. 그런 다음 오류 키를 치면 아무 일도 일어나지 않습니다. 오늘 밤'refusesFirstResponder'의 가치를 확인하겠습니다. – Kyle

답변

0

위/아래 화살표 키에 응답하지 않는 NSTableView가 있습니다. 내 이해에서 이것은 기본 동작입니다.

이것은 기본 동작이 아닙니다. NSTableView는 키보드 이벤트를 처리하고 커서 키를 사용하여 탐색 할 수 있습니다.

어쩌면 당신은 다음과 같은 질문에 트릭으로 리스폰 더 체인을 디버깅 할 수 있습니다 : How to inspect the responder chain?

+0

응? "이것은 기본 동작이 아닙니다" "NSTableView가 키보드 이벤트를 처리합니다."라는 모순이있는 것 같습니다. – paulmelnikow

+0

질문을 올바르게 이해하면 Zenox는 NSTableView가 키보드 이벤트를 처리하지 않는다고 가정합니다. 이 가정은 잘못되었습니다. NSTableView의 기본 구현은 키보드 탐색 기능을 제공합니다. –

1

당신이 어디 keyDown:을 무시 했습니까? 사용자 정의 NSTableView 하위 클래스 또는 윈도우 컨트롤러에있을 수 있습니까? 이것은 화살표 키가 당신의 테이블에서 작동하지 않는 원인이 될 수 있습니다.

사용자 지정 테이블보기에서 같은 문제가 발생했습니다. 테이블이 포함 된 NSWindow 표시가 키 윈도우가 아닌 경우

@implementation ILCustomTableView 

- (void)keyDown:(NSEvent *)theEvent 
{ 
    if ([theEvent modifierFlags] & NSNumericPadKeyMask) 
    { 
     [super keyDown:theEvent]; // Let table view handle arrow keys 
    } else { 

     [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];   
    } 
} 

- (void)insertNewline:(id)sender 
{ 
    // Enter key. Do special stuff here... 
} 
@end 
2

NSTableView는 또한 화살표 키를에 응답하지 않을 것이다 : 화살표 키를 사용하여 표가 이벤트를 처리 할 수 ​​있도록하는 나는 super를 호출하여 그것을 해결.

NSWindow의 "제목 표시 줄"모양 옵션이 Interface Builder에서 설정되지 않은 경우 최근에 발생한 상황이 발생할 수 있습니다. NSWindow의 기본 동작을 변경하여 키 상태를 거부합니다. -[NSWindow canBecomeKeyWindow]을 참조하십시오.

NSWindow가 제목 표시 줄없이 모달 시트로 표시되는 경우에도 제목 표시 줄 옵션을 설정해야하거나 키 이벤트가 NSTableView에 도달하지 않습니다.

0

이 문제가 발생하여 위/아래 화살표 키가 행을 올바르게 선택하지 못하는 것으로 나타났습니다. 난 내 자신의 배경 색상을 사용하려고했다

[self.tableView setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone];

그래서 그렇게했다. 그리고 위/아래로 두드렸을 때 shouldSelectRow:을 유발했지만 항상 0이었습니다! 위의 행을 주석 처리하면 나를 위해 해결했습니다.

0

화살표 키를 사용하면 tableview의 대리인이 변경 사항을 통보받지 못했습니다.

내 스위프트 솔루션이었다

제 1 서브 클래스라는 NSTableView는하고이 메소드를 오버라이드 (override).

override func keyDown(theEvent: NSEvent) { 
    super.keyDown(theEvent) 
    let code=theEvent.keyCode 
    if code >= 123 && theEvent.keyCode <= 126 { 
     if let target=target{ 
      target.performSelector(action) 
     } 
    } 
} 

123 개의 126 코드는 왼쪽, 오른쪽, 아래로 각각

관련 문제