문제
서브클래스를 하려고 하는데 NSCell
사용자 정의 배경 하이라이트를 그립니다.문서에서는 재정의가 제안된 것 같습니다. highlight:withFrame:inView:
이 작업을 수행할 수 있어야 하는데 메서드가 호출되지 않습니다.
대신에 나는 재정의했습니다. drawInteriorWithFrame:inView:
잘 작동합니다. 셀에 원하는 것을 그릴 수 있습니다.그러나 문제는 내가 확장하는 NSCell 유형의 기능을 잃어버리면서 모든 것을 직접 그려야 한다는 것입니다. 예를 들어 텍스트를 표시하는 NSTextFieldCell의 기능은 다음과 같습니다.
사용자 정의로 그려진 강조 표시된 셀:
그러나 배경(강조 표시)을 다시 그리고 확장 셀의 주요 기능을 사용하는 기능을 유지하고 싶습니다.
물론 텍스트를 직접 그릴 수도 있지만 더 쉬운 방법이 있기를 바랍니다.
어떤 도움이라도 대단히 감사하겠습니다.
해결책
@Bavarious의 도움 덕분에 문제를 해결할 수 있었습니다.확장된 NSTextFieldCell 클래스 구현에는 이제 다음이 포함됩니다.
-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return nil;
}
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
if ([self isHighlighted]) {
// Draw highlight background here
}
[super drawInteriorWithFrame:cellFrame inView:controlView];
}
열쇠는 당신이 돌아왔는지 확인하는 것입니다 nil
~을 위한 highlightColorWithFrame:inView:
그만하다 drawInteriorWithFrame:inView:
배경을 그리면서 여전히 이를 호출하여 주요 내용(이 경우 텍스트)을 그립니다.
제휴하지 않습니다 StackOverflow