2016-03-15 22 views
11

C'è un modo per cambiare il risponditore o selezionare un'altra vista di testo premendo la linguetta sulla tastiera, in Swift?Selezionare NSTextView successivo con il tasto Tab in Swift

enter image description here

Note: E 'per un riempimento nell'applicazione tipo vuoto.

Il mio VC crea un elenco di Parole [Parola] e ognuna di queste parole ha il proprio WordView - word.wordView. Il WordView è ciò che viene visualizzato. WordView è figlio di NSTextView.

Ho provato a eseguire l'override del keydown ma non mi consente di digitare nulla nella visualizzazione del testo.

risposta

5

È necessario collegare il textField nextKeyView alla prossima textField attraverso la IB oa livello di programmazione:

textField1.nextKeyView = textField2 

enter image description here

+1

https://www.dropbox.com/s/59z6w8y1qp9pwa8/nextKeyView.zip?dl=0 –

+0

Non riesco a farlo funzionare, ma suona come una grande idea Attualmente il mio loop è simile al seguente: previousWord.wordView.nextKeyView = word.wordView – Aaron

+0

Ma crea ancora un tab spazio nella vista di testo corrente, non cambia in "nextKeyView" quando premo Tab. – Aaron

5

Supponendo di voler passare da textView1 a textView2. Primo set il delegato:

self.textView1.delegate = self 

quindi implementare il metodo delegato:

func textView(textView: NSTextView, doCommandBySelector commandSelector: Selector) -> Bool { 
    if commandSelector == "insertTab:" && textView == self.textView1 { 
     self.window.makeFirstResponder(self.textView2) 
     return true 
    } 
    return false 
} 
+0

Aiutami a capire che "io" è in questo caso? il controller di visualizzazione? – Aaron

+0

Il mio VC crea un elenco di Parole [Parola] e ognuna di queste parole ha il proprio WordView - word.wordView. Il WordView è ciò che viene visualizzato. WordView è figlio di NSTextView. – Aaron

+0

Quando inserisco la funzione nel VC, dice: ViewController non ha una 'finestra' membro ' – Aaron

Problemi correlati