Ich erstelle meine erste Anwendung und ich habe ein Fenster, das aus mehreren Unterklassen für die Ansichten und das Fenster besteht. Ich habe eine NSWindowController-Klasse, eine NSWindow-Unterklasse und drei NSView-Unterklassen, um ein einzelnes Fenster zu erstellen. Alles funktioniert perfekt und sieht perfekt aus, außer dass ich Mausereignisse verwenden muss, aber ich weiß nicht, wo ich es hinstellen soll. Tatsächlich habe ich versucht, es in jede Klassendatei zu stellen und es funktioniert immer noch nicht.Ziel C, Wohin mit Mausereignismethoden?
Was ich tun möchte ist, mein existierendes Fenster, das immer oben ist, transparent zu machen (nicht vollständig transparent, aber teilweise (transparent und ich weiß, wie ich es einstellen soll), wenn die Maus das Fenster verlassen hat und erst dann undurchsichtig wird, wenn die Maus das Fenster betreten hat oder wenn das Fenster zum Schlüsselfenster wird.
Nachfolgend sind die Teile der Codes, die helfen könnten zu verstehen, was los ist: (ich änderte einige der Variablen und die Klassennamen)
App Delegierter:
#import "AppDelegate.h"
#import "MainWindowController.h"
@implementation AppDelegate
@synthesize window = _window;
-(IBAction)showMainWindow:(id)sender
{
mainWindowController = [[MainWindowController alloc] init];
mainWindow = [mainWindowController window];
[mainWindow makeKeyAndOrderFront:sender];
[NSApp activateIgnoringOtherApps:YES];
}
.....
MainWindowController:
#import "MainWindowController.h"
-(id) init {
self = [super initWithWindowNibName:@"MainWindow"];
return self;
}
.....
// These don't work
-(void)mouseExited:(NSEvent *)theEvent
{
if ([self.window level] == NSFloatingWindowLevel && ![self.window isKeyWindow]) {
[self.window setOpaque:NO];
}
}
-(void)mouseEntered:(NSEvent *)theEvent
{
if ([self.window level] == NSFloatingWindowLevel) {
[self.window setOpaque:YES];
}
}
.....
Und dann habe ich nur drei NSView Klassen und eine NSWindow Unterklasse mit Farben, die eine Rund-um-rect Fenster zu machen. Was/wo sollte ich ändern/hinzufügen, um das gewünschte Ergebnis zu erhalten?
Ich habe auch versucht, [window setAcceptsMouseMovedEvents: YES], aber immer noch nicht funktioniert.
Vielen Dank im Voraus!
Haben Sie den Abschnitt Behandlung von Mausereignissen im Cocoa Event Handling Guide gelesen? Die Dokumentation ist dein Freund ... –
@JoshuaNozzi Ja, aber ich verstehe es immer noch nicht und darum habe ich gefragt. Insbesondere, um zu erkennen, ob sich die Maus im Fenster (oder in der Ansicht) befindet oder nicht, wenn die Anwendung nicht fokussiert ist. Wenn es eine spezielle Erklärung dazu in der Maus-Event-Dokumentation gibt, könnten Sie mir bitte einen kleinen Hinweis geben, wo es ist? – Dennis
Vergiss es. Ich hab es geschafft. – Dennis