Frage

AKTUALISIERT:. Ich bin jetzt die NSView keyUp Methode aus einer NSView Unterklasse wie unten an Ersthelfer setzen überschreiben, aber ich bin immer noch keine Beweise sehen, dass es genannt wird

@implementation svsView

- (BOOL)acceptsFirstResponder {
    return YES;
}

- (void)keyUp:(NSEvent *)event {
  //--do key up stuff--
  NSLog(@"key up'd!");
}

@end

- ORIGINAL POST-- Ich bin neu in Cocoa und Obj-C und ich versuche, einen (void) keyUp zu tun: aus der Umsetzung meiner Controller-Klasse (die selbst vom Typ NSController ist). Ich bin nicht sicher, ob dies der richtige Ort, um es zu setzen, though. Ich habe eine Reihe von Tasten wie jeder Satz zu einem eindeutigen Schlüssel-Äquivalent (Schaltfläche Attribute IB) und jeder ruft meine (IBAction) keyInput Methode, die dann auf ein anderes Objekt die Identität jeden Schlüssels übergibt. Dies läuft ganz gut, aber ich möchte auch verfolgen, wenn jede Taste losgelassen wird.

- ORIGINAL [schlecht] Beispiel -

@implementation svsController

//init
//IBActions

- (IBAction)keyInput:(id)sender {
  //--do key down stuff--
}

- (void)keyUp:(NSEvent *)event {
  //--do key up stuff--
}

@end

Nach dem fehlschlagen, ich habe auch versucht die keyUp als IBAction (statt void), wie die benutzerdefinierte keyInput ist, und hakte es im Interface Builder auf die entsprechenden Tasten, aber dann wurde keyUp nur aufgerufen, wenn die Schlüssel waren nach unten und nicht, wenn sie losgelassen. (Was ich irgendwie dachte passieren würde.)

Pardon mein noobery, aber soll ich diese Methode in einer anderen Klasse werden zu bringen oder anders, etwas zu tun? Überall dort, wo es ist, aber ich muß es in der Lage sein, Objekte von der Controller-Klasse im Besitz zugreifen zu können.

Vielen Dank für jede Einsicht Sie haben können.

War es hilfreich?

Lösung 2

Wow! Ich glaube, ich habe es genagelt. Ich brauche nur meine Unterklasse mit einem NSView / NSWindow Verweise auf die Klasse in IB zu instanziieren. War eigentlich nicht eine Instanz davon in der Benutzeroberfläche zu schaffen. Die letzten paar Stunden auf den crapper! Sans, dass ich das eine oder andere auf dem Weg gelernt. ;)

Andere Tipps

NSResponder Unterklassen (wie eine benutzerdefinierte Unterklasse von NSView) Schlüsselereignisse behandeln. Sie behandeln auch abstraktere Ebene Ereignisse wie „nach links / rechts“, „Insert Newline“ usw. Sie können dann eine Nachricht an einen Controller senden, entsprechend zu reagieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top