KeyDown und Kakao Probe
Ich bin, zu lernen, wie zum erstellen von Programmen mit Kakao. Ich bin mit einem Beispiel-Apple-Anwendung, die video-Aufzeichnungen einer webcam. Ich möchte zum starten und stoppen der video Aufnahme die-Taste drücken. Ich habe versucht, zu überschreiben, das keydown-Ereignis, aber ich habe gelesen, dass es nicht möglich ist in einem NSObject
. Wie kann ich mit dieser Art von Veranstaltung?
Klasse der Anwendung wird ein NSObject
Klasse.
Dies ist der code:
- (void)keyDown:(NSEvent *)event {
NSLog(@"Hi there");
NSString *characters = [event characters];
if ([characters length]) {
switch ([characters characterAtIndex:0]) {
case NSUpArrowFunctionKey:
NSLog(@"Key UP");
break;
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Richtig. Nur ein responder auf Ereignisse reagieren kann.
Implementieren, die einen responder. Unterklassen NSWindow oder NSWindowController arbeiten. Stellen Sie sicher, Ihre aktuelle Fenster oder Fenster-controller eine Instanz der Unterklasse.
Der Kakao-Dokumentation erklärt weiter.
Warum? Normalerweise ist die principal-Klasse des application bundle ist NSApplication oder eine Unterklasse davon—und es gibt nicht viele gute Gründe für die Unterklasse NSApplication.
Ich nicht lernen, durch den Hillegass Buch, das mich (ich habe auf den Apple-docs), aber es ist eine sehr beliebte Empfehlung und ich habe es gelesen und kann Ihnen sagen, es ist gut.
Aus der Kakao-Event-Handling-Guide - Die Responder-Kette:
Wenn Sie eine Taste drücken, das Fenster erhält das keyDown-Ereignis. Dann löst es das event, das first responder, dass in der Regel ist die control mit einem blauen Ring an seine Grenze gehen (klicken Sie auf das Adressfeld in Safari oder Firefox, wenn es blau-bezeled dann ist es first-responder-status).
Wenn der first responder nicht Essen der Tastendruck (das Safari-Adressfeld Essen tut es, wenn es zeigt eine Figur), dann geht es in den responder chain der nächsten responder in der view-Hierarchie, dann der Fenster und Fenster-controller, wie Sie sehen können, in der Guide. (Aufpassen, dass die Aktion responder ist eine andere Geschichte.)
So implementieren Sie das keyDown-Ereignis: auf eine Ansicht von Ihrem Fenster oder im Fenster selbst, wenn es keine Aussicht, das Essen, Veranstaltungen. Der einfachste Weg zu testen ist das überschreiben der keyDown: Methode ein leeres Fenster
Legen Sie Ihre Hände in das Innenleben, können Sie auch versuchen, Sie überschreiben die sendEvent: - Methode des Fensters. sendEvent: löst die Ereignisse um den Blick auf die Fenster, und von dort können Sie zum Beispiel melden Sie alle Veranstaltungen, verwaltet die Fenster.
Ähnlich, Sie können eine Unterklasse NSView und überschreiben Sie die event-handling-Methoden.
Lernen Objective-C auf dem Mac von Dalrymple ist sehr einfach, deckt genug Grundlagen und bewegt sich schnell genug, um Sie aus dem Boden in einer kurzen bit. Es berührt über alles, von Xcode und Interface Builder zu OOP und Objective-C-Praktiken. Besonders hilfreich für Anfänger (IMHO) sind die Quelle-Datei-Organisation und Stiftung, kit Kapitel.
Viel Glück!