문제

내 nstableCellView에 여러 개의 nstextFields가 있습니다. 여기에 이미지 설명을 입력하십시오

두 번 클릭 조치를 사용하면 첫 번째 텍스트 필드에서 편집을 활성화 할 수있는 [self.outlineView editColumn:0 row:clickedRow withEvent:nil select: YES];를 호출합니다.또한 사용자가 탭 키를 탭하여 모든 필드를 통해 탭 키를 누를 수 있도록 NextKeyViews를 설정했습니다.그러나 마우스 키를 사용하여 텍스트 필드를 직접 선택하려고하면 작동하지 않습니다.NSTableCellView에서 편집을 선택 / 선택 해제하므로 매번 첫 번째 텍스트 필드 만 편집합니다.

어떻게 작동 할 수 있도록 어떻게 작동 할 수 있도록 올바른 필드를 선택하고 편집 할 수 있습니까?

도움이 되었습니까?

해결책

솔루션을 찾았습니다.

  • subclass nstableView / nsoutlineview
  • 서브 클래스에서 - (void) mouseDown:(NSEvent *)theEvent
  • 를 덮어 씁니다.

mousedown :

        NSPoint selfPoint = [self convertPoint:theEvent.locationInWindow fromView:nil];
        NSInteger row = [self rowAtPoint:selfPoint];
        if (row>=0) [(ContactInfoTableCellViewMac *)[self viewAtColumn:0 row:row makeIfNecessary:NO]
                     mouseDownForTextFields:theEvent];
.

contactinfoTableCellViewMac :

- (void) mouseDownForTextFields:(NSEvent *)theEvent {
    if ((NSCommandKeyMask | NSShiftKeyMask) & [theEvent modifierFlags]) return;
    NSPoint selfPoint = [self convertPoint:theEvent.locationInWindow fromView:nil];
    for (NSView *subview in [self subviews])
        if ([subview isKindOfClass:[NSTextField class]])
            if (NSPointInRect(selfPoint, [subview frame]))
                [[self window] makeFirstResponder:subview];
}
.

전체 참조 번호 : 에 응답보기 기반 테이블보기의 텍스트 필드의 마우스 이벤트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top