我已經子類NSWindow和我有一個mywindow的類實現以下方法:更改鼠標光標放在非激活NSWindow
-(void)resetCursorRects {
NSImage *image = [NSImage imageNamed:@"cursor.png"];
[image setSize:NSMakeSize(32, 32)];
NSCursor *cursor = [[NSCursor alloc] initWithImage:image hotSpot:NSMakePoint(1, 1)];
[super resetCursorRects];
[self addCursorRect:[self bounds] cursor:cursor];
}
這將改變光標整個窗口,我會看,而不是cursor.png的默認的鼠標指針。問題是,只有當MYWindow被設置爲關鍵窗口,這當然不是微不足道的。
在我的項目開始時,我只有一個主窗口,但現在我需要有兩個不同的MYWindow。兩個窗口的問題無法設置爲關鍵窗口,因此只能在活動窗口上顯示自定義鼠標指針。我需要點擊另一個窗口來顯示光標。
有沒有辦法解決這個問題?所以我在兩個窗口上都有一個自定義光標?
編輯:嘗試NSTrackingArea
我將此添加到我的內容視圖的init方法:
self.trackingArea = [[NSTrackingArea alloc] initWithRect:[self frame] options: (NSTrackingCursorUpdate | NSTrackingActiveAlways | NSTrackingMouseMoved) owner:self userInfo:nil];
[self addTrackingArea:self.trackingArea];
然後我overrided cursorUpdate:是這樣的:
-(void)cursorUpdate:(NSEvent *)event {
NSLog(@"event : %@", event);
[[NSCursor crosshairCursor] set];
}
這使得crosshairCursor顯示何時包含NSImageView派生類的NSWindow是關鍵窗口。但是,如果我在應用程序的關鍵窗口內創建另一個NSWindow,則光標會再次返回到標準光標。難道我做錯了什麼?
我是新來的OS X,但從我讀過的addCursorRect爲整個矩形定義了一個特定的光標 - 如果您想在鼠標移動到不同區域時更改光標,該怎麼辦?讓我們假設我無法預先定義所有rects。我想你可以改變self.cursor並調用resetCursorRects ... 重寫'windowDidBecomeKey'和'windowDidBecomeMain'以調用'[self.cursor push]'似乎是一種替代解決方案,儘管您暫時可以看到光標閃爍當點擊窗口時到正常的箭頭。 (你甚至需要使用光標縮進的'push'?) – sqweek