NSButton 얻을 그려 내 사용자 지정 NSCell 지만,실제로 클릭 가능
-
13-11-2019 - |
문제
나는 NSTableView 포함하는 내 사용자 지정 NSCell 서브 클래스,IconCell.
이 IconCell 포함되어 세 가지 요소:이미지,텍스트,그리고 단추입니다.
여기에 간단한 버전의 내가 그리기 코드(closeButton
단추):
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSPoint cellPoint = cellFrame.origin;
[controlView lockFocus];
CGFloat buttonWidth = [closeButton frame].size.width;
[someNSImage drawInRect:NSMakeRect(cellPoint.x, cellPoint.y, ICON_WIDTH, ICON_HEIGHT) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
[someNSString drawInRect:NSMakeRect(cellPoint.x+ICON_WIDTH+PADDING, cellPoint.y, cellFrame.size.width - ICON_WIDTH - buttonWidth, cellFrame.size.height) withAttributes:someTextAttributes];
[(NSButtonCell*)[closeButton cell] drawWithFrame:NSMakeRect(cellPoint.x + cellFrame.size.width - buttonWidth, cellPoint.y, buttonWidth, cellFrame.size.height) inView:controlView];
[controlView unlockFocus];
}
그림 부분이 잘 작동하고 생산식은 다음과 같습니다.
는 내가 무엇을 원합니다.
또한,내가 원하는 두 가지 중 하나이 일어날 때 사용자가 상호 작용하는 세포:을 클릭하면 어디서든 세포를 제외하고,닫기 버튼을,그것이 해야 할지 actionA
.는 경우에는 사용자를 클릭 닫기 버튼을,그것이 해야 할지 actionB
.
문제는 내가 하는 것은 닫기 버튼이 보인다"눈에 보이지 않는"--클릭 하는 경우에 그것은,그것을 움직이지 않는 반면(작동하는 버튼을 표시해야 그 아래로 밀어 주),그리고 일반적으로 그것으로 동작하지 않으면 거기 actionA
가 트리거되는 대신 actionB
.
이것은 어떻게 설정하는 작업:
[tableView setAction:@selector(actionA)];
고
[closeButton setAction:@selector(actionB)];
무엇이 잘못된 것입니까?
해결책
당신은 단지 그림을 그리의 단추입니다.이것은 같은 것을 배치하는 것처럼 실제 버튼으로 세포입니다.
세포지 않다 전망,그래서 이보다 더 복잡하다고 생각할 수 있습니다.당신이 정말로 필요하다면 이를 세포로,그것은 여기에 설명: NSButtonCell 내부 사용자 지정 NSCell.
하지만...는 경우 제한할 수 있습니다 자신을 10.7+,그들이 추가한 뷰 기반 tableviews.이들은 훨씬 간단하게 할 수 있기 때문에,선체 NSButton
안 NSTableViewCellView
.이 설명서 테이블 보기 프로그래밍 가이드.추천하는 경우 제한할 수 있습니다 자신을 10.7+.