2013-03-25 2 views
1

데이터를 표시하는 NSOutlineView가있는 NSPanel이 있습니다. 패널에 초점이 맞지 않더라도 (즉 키 윈도우가 아님) NSOutlineView 내부에서 첫 번째 클릭으로 행을 선택하고 싶습니다. 선택을 허용하는 델리게이트가 있으며 acceptsFirstMouse : 메소드를 재정의하기 위해 NSOutlineView 클래스를 재정의했습니다. 나는 첫번째 클릭 선택을 얻을 수 없었다.NSOutlineView 첫 번째 클릭으로 선택

mouseDown 이벤트를 검사했는데 패널이 키 윈도우가 아니거나 없을 때 (재정의 한 클래스에서) 아무런 문제없이 해고되었습니다. 하지만 패널이 키가 아닌 경우 NSOutlineViewDelegate 메소드 shouldSelectItem :이 호출되지 않습니다.

무엇이 잘못되었거나 잘못 되었습니까?

답변

2

당신은 당신의 NSTableOutlineView를 서브 클래스 화해, 오버라이드 (override) 할 필요가 :

- (BOOL)needsPanelToBecomeKey 

은 NO 돌아갑니다.

NSView의 클래스 참조 상태 : 수신기가 그렇지되고 키를 피할 수는 키보드 입력을 처리 할 수 ​​있도록 키 창되기 위해 패널을 필요로하는 경우

서브 클래스에 의해 오버라이드 (override)를 결정하는 및 탐색.

토론

이러한 서브 클래스는 YES 돌아 acceptsFirstResponder 를 오버라이드 (override) 할 필요가 있습니다.

이 방법은 키보드 탐색에도 사용됩니다. 그것은 마우스 클릭이 뷰에 포커스를 주어야하는지 (첫 번째 응답자로 만드는지)를 결정합니다. 일부보기에서는 클릭 할 때 예제 텍스트 필드에 대해 키보드 포커스를 얻으 려합니다. 다른보기는 예를 들어 버튼과 같이 탭으로 포커스를 이동해야합니다. 체크 상자를 클릭했기 때문에 포커스가 편집 진행중인 텍스트 필드로 이동하는 것을 원하지 않을 것입니다.

출처 : Apple documentation

+0

감사합니다! 매력처럼 일했습니다. – Bikush

관련 문제