Più nstextfields a NSTABLECellView;solo prima può essere modificato direttamente
-
21-12-2019 - |
Domanda
Ho più diversifies nella mia NSTABLECellView:
Con un doppio clic, chiamo [self.outlineView editColumn:0 row:clickedRow withEvent:nil select: YES];
che funziona nell'attivare la modifica nel primo campo di testo.Ho anche impostato NextKeyViews in IB in modo che l'utente possa premere Tab Tasto per selezionare tutti i campi.Ma quando provo a selezionare i campi di testo direttamente con il tasto del mouse, non funziona mai.Seleziona / deseleziona solo la modifica su NSTABLECellView, e quindi modifica solo il primo campo di testo ogni volta.
Come posso ottenere questo per funzionare in modo da poter selezionare e modificare il campo corretto?
Soluzione
Trovato una soluzione:
- .
- sottoclasse nstableview / nsoutlineview
- in sottoclasse, override
- (void) mouseDown:(NSEvent *)theEvent
in 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];
.
In 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];
}
.
Riferimento completo: Rispondere aEventi del mouse nel campo di testo in vista tabella a vista