2012-10-28 4 views
7

View 기반 테이블 뷰에서 일반 (서브 클래 싱되지 않은) NSTableCellView를 사용하고 있습니다. 초기 이미지 및 텍스트 필드보기가 있습니다. 나는 NSStepper를 뷰에 추가했다.NSTableCellView의 NSStepper는 아무런 효과가 없습니다.

텍스트 필드는 tableCellView.objectValue.quantity에 바인딩됩니다. 스테퍼의 값은 tableCellView.objectValue.quantity에도 바인딩됩니다.

문제는 응용 프로그램을 실행할 때 스테퍼를 클릭해도 마우스 이벤트가 나타나지 않고 화살표가 강조 표시되지 않으면 값이 증가하거나 감소하지 않는다는 것입니다.

테이블보기의 이중 동작을 설정하면 스테퍼를 투명하게 두 번 클릭하면 트리거됩니다.

무엇이 누락 되었습니까?

감사합니다.

답변

9

설명서를보아야하지만 가장 쉬운 방법은 NSTableView를 서브 클래스 화하고 제안 된 첫 번째 응답자의 유효성을 검사하기 위해이 메서드를 재정의해야한다는 것입니다. 문서에서 NSTableViews는 행을 처음 선택하지 않으면 일부 컨트롤을 사용할 수 없도록 지정합니다. 그럼에도 불구하고 여전히 일부는 폐기 될 수 있습니다.

- (BOOL)validateProposedFirstResponder:(NSResponder *)responder forEvent:(NSEvent *)event { 
    return YES; 
} 
+0

대단히 감사합니다. 작동합니다! – wdyp

+0

당신은 영웅입니다 !!! –

0

Robert Payne의 정답에 더하여, Swift를 사용하면 NSTableView에 확장을 추가하고 하위 클래스를 추가 할 수 있습니다.

extension NSTableView { 
    override public func validateProposedFirstResponder(responder: NSResponder, forEvent event: NSEvent?) -> Bool { 
     return true 
    } 
} 

저는 NSTableView가 아니라 NSTableView라는 점을 강조하고 싶습니다.