Несколько NstextFields в NstableCellView;только первый может быть отредактирован напрямую
-
21-12-2019 - |
Вопрос
У меня есть несколько 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];
}
.
Полная ссылка: Ответить наСобытия мыши в текстовом поле в представлении на основе обзора на основе таблицы