NSTableView - Navigation

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSTableView - Navigation

    Ich habe aktuell ein NSTableView, in dem ich gerne mit den Arrow-Tasten navigieren würde.
    Erfolgreich implementiert habe ich die Tab-Taste, mit der man ein Feld nach rechts springt und am Tabellenende eine Zeile nach unten, sowie ein "moveDown"

    Quellcode

    1. @objc func doClick(_ sender: AnyObject?) {
    2. if (sender?.identifier == "BlindbathTable" && blindBathTable.clickedColumn != 0 && blindBathTable.clickedColumn != 4) {
    3. blindBathTable.editColumn(blindBathTable.clickedColumn, row: blindBathTable.selectedRow, with: nil, select: true)
    4. }
    5. }
    6. if (control.identifier!.rawValue == "BlindbathTable" && commandSelector == #selector(NSStandardKeyBindingResponding.insertTab(_:)) && control.selectedCell()?.tag == 1 && selectedRow < 3) {
    7. blindBathTable.selectRowIndexes(indizes as IndexSet, byExtendingSelection: false)
    8. blindBathTable.editColumn(1, row: selectedRow, with: nil, select: true)
    9. else if (control.identifier!.rawValue == "BlindbathTable" && commandSelector ==
    10. #selector(NSStandardKeyBindingResponding.moveDown(_:)) && selectedRow < 3) {
    11. blindBathTable.selectRowIndexes(indizes as IndexSet, byExtendingSelection: false)
    12. blindBathTable.editColumn(1, row: selectedRow, with: nil, select: true)
    13. return true
    14. }
    Alles anzeigen


    Auf die gleiche Art und Weise wollte ich statt "insertTab" dann "moveLeft" und "moveUp" implementieren. Das funktioniert aber so überhaupt nicht
    Zwar wird die Methode aufgerufen, reagiert aber völlig seltsam.
    Bei "moveUp" schreibe ich :

    Quellcode

    1. else if (control.identifier!.rawValue == "BlindbathTable" && commandSelector ==
    2. #selector(NSStandardKeyBindingResponding.moveUp(_:))) {
    3. blindBathTable.selectRowIndexes(indizes as IndexSet, byExtendingSelection: false)
    4. blindBathTable.editColumn(1, row: selectedRow-2, with: nil, select: true)
    5. return true
    6. }
    Dann habe ich zwar das "ready to edit" Feld in der richtigen Reihe aber das Highlight im TableView ist eines weiter nach unten gegangen (siehe Bild im Anhang).
    Irgendwas prinzipielles scheine ich wohl falsch zu verstehen.

    Kann mir jemand sagen, wie ich das korrekt implementieren muss?

    Hans
    Bilder
    • Bildschirmfoto 2018-12-17 um 09.43.17.png

      121,44 kB, 1.372×282, 38 mal angesehen
  • Mac & i Test Abo
  • OK, habs jetzt doch herausgefunden:


    Quellcode

    1. else if (control.identifier!.rawValue == "BlindbathTable" && commandSelector ==
    2. #selector(NSStandardKeyBindingResponding.moveUp(_:))) {
    3. editedColumn = blindBathTable.editedColumn
    4. blindBathTable.selectRowIndexes(IndexSet(integer: selectedRow-1), byExtendingSelection: false)
    5. blindBathTable.editColumn(editedColumn, row: selectedRow, with: nil, select: true)
    6. return true
    7. }
    Dann funktioniert es wie gewünscht