0
我有一個彈出式窗口的一部分,我用線畫出了一個自定義光標。因此,我不希望標準光標顯示在某個區域內(isInDiagram)。取消隱藏光標滯後
這是我的代碼:
- (void)mouseMoved:(NSEvent *)theEvent {
position = [self convertPoint:[theEvent locationInWindow] fromView:nil];
if(![self isInDiagram:position]) {
[NSCursor unhide];
}
else{
[NSCursor hide];
}
[self setNeedsDisplay: YES];
}
- (bool) isInDiagram: (NSPoint) p {
return (p.x >= bborder.x + inset) && (p.y >= bborder.y + inset) &&
(p.x <= self.window.frame.size.width - bborder.x - inset) &&
(p.y <= self.window.frame.size.height - bborder.y - inset);
}
現在隱藏光標工作完全正常,但總是滯後取消隱藏。我無法弄清楚什麼最終會觸發光標再次顯示。但是,如果我循環取消隱藏命令取消隱藏工作:
for (int i = 0; i<100; i++) {
[NSCursor unhide];
}
我怎麼能解決這個問題,而使用這個uggly循環任何想法?
謝謝你的回答。你寫的東西讓你感覺很舒服,但如果我嘗試你的代碼,當我移動鼠標時,光標會閃爍,當我停止移動它時,光標有時會被隱藏,有時不會。 此外xCode告訴我,CGCursorIsVisible()已棄用:https://developer.apple.com/reference/coregraphics/1541812-cgcursorisvisible 編輯:我必須 - 當然 - 檢查光標是否在圖中再次elese if語句:else if([self isInDiagram:position] && CGCursorIsVisible());非常感謝你! – user7408924
@ user7408924我知道它已被棄用。您可以使用自己的旗子來維護旗幟。對不起,我正在編輯我的閃爍答案。請檢查編輯答案 – codester
我剛剛注意到。謝謝 :) – user7408924