Domanda

Ho più diversifies nella mia NSTABLECellView: Inserisci Descrizione dell'immagine qui

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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top