Несколько NstextFields в NstableCellView;только первый может быть отредактирован напрямую

StackOverflow https://stackoverflow.com//questions/23025014

Вопрос

У меня есть несколько nstextfields в моем NstableCellView: Введите описание изображения здесь

с двойным щелчком действия, я называю [self.outlineView editColumn:0 row:clickedRow withEvent:nil select: YES];, который работает в активации редактирования в первом текстовом поле.Я также настроил NextKeyViews в IB, чтобы пользователь мог нажать на вкладку вкладку на вкладку через все поля.Но когда я пытаюсь выбрать текстовые поля напрямую с помощью клавиши мыши, он никогда не работает.Он выбирает / отменить выбор редактирования только на NstableCellView, и, следовательно, только редактирует первое текстовое поле каждый раз.

Как я могу заставить это работать, чтобы я мог выбрать и редактировать правильное поле?

Это было полезно?

Решение

Нашел решение:

    .
  • subclass nstableview / nsoutlineview
  • в подклассе, переопределить генеракодицетагкод

в 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