2016-03-15 24 views
11

Czy istnieje sposób na zmianę respondenta lub wybór innego widoku tekstu poprzez naciśnięcie klawisza Tab na klawiaturze, w Swift?Wybierz następny NSTextView klawiszem Tab w Swift

enter image description here

Uwagi: To dla wypełnić puste aplikacji typu.

Mój VC tworzy listę słów [Słowo], a każde z tych słów ma swój własny WordView - word.wordView. WordView jest tym, co jest wyświetlane. WordView jest dzieckiem NSTextView.

Próbowałem zastąpić keydown, ale nie pozwala mi wpisywać niczego w widoku tekstowym.

Odpowiedz

5

Musisz podłączyć textField nextKeyView do następnego textField przez IB lub programowo:

textField1.nextKeyView = textField2 

enter image description here

+1

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

+0

Nie mogę tego zrobić, ale brzmi to jak świetny pomysł. Moja pętla wygląda obecnie następująco: previousWord.wordView.nextKeyView = word.wordView – Aaron

+0

Ale nadal tworzy tylko spację tabulacji w bieżącym widoku tekstowym, nie zmienia się w "nextKeyView" po naciśnięciu Tab. – Aaron

5

Zakładając, że chcesz przejść z textView1 do textView2. Najpierw ustawić delegata:

self.textView1.delegate = self 

następnie wdrożyć metodę Delegat:

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

Pomóż mi zrozumieć, czym jest "ja" w tym przypadku? kontroler widoku? – Aaron

+0

Mój VC tworzy listę słów [Słowo], a każde z tych słów ma swój własny WordView - word.wordView. WordView jest tym, co jest wyświetlane. WordView jest dzieckiem NSTextView. – Aaron

+0

Kiedy umieszczam func w VC, mówi: ViewController nie ma "okna" członka – Aaron