这是我尝试过的:
NSCursor *sysCursor = [NSCursor currentSystemCursor];if (sysCursor == nil) { NSLog(@"nil");}if ([sysCursor isEqual: [NSCursor arrowCursor]] || [sysCursor isEqual: [NSCursor contextualMenuCursor]] || [sysCursor isEqual: [NSCursor closedHandCursor]] || [sysCursor isEqual: [NSCursor crosshairCursor]] || [sysCursor isEqual: [NSCursor disappearingItemCursor]] || [sysCursor isEqual: [NSCursor dragcopyCursor]] || [sysCursor isEqual: [NSCursor draglinkCursor]] || [sysCursor isEqual: [NSCursor IBeamCursor]] || [sysCursor isEqual: [NSCursor openHandCursor]] || [sysCursor isEqual: [NSCursor operationNotAllowedCursor]] || [sysCursor isEqual: [NSCursor pointingHandCursor]] || [sysCursor isEqual: [NSCursor resizeDownCursor]] || [sysCursor isEqual: [NSCursor resizeleftCursor]] || [sysCursor isEqual: [NSCursor resizeleftRightCursor]] || [sysCursor isEqual: [NSCursor resizeRightCursor]] || [sysCursor isEqual: [NSCursor resizeUpCursor]] || [sysCursor isEqual: [NSCursor resizeupdownCursor]] || [sysCursor isEqual: [NSCursor IBeamCursorForVerticalLayout]] ) { NSLog(@"equal");} else { NSLog(@"not");}
光标不是零,但同时它不等于任何其他光标.它甚至不等于它自己:
NSLog(@"%i",[[NSCursor currentSystemCursor] isEqual:[NSCursor currentSystemCursor]]); // 0
想法?这是一个lsuielement类型的应用程序,如果这很重要.
解决方法 这是一个非常黑客,但看起来可以使用hotSpot属性分辨至少一些游标:NSLog(@"%@",NsstringFromPoint([[NSCursor currentSystemCursor] hotSpot]));
这将返回{5,5}作为默认指针光标.在某些情况下(比如更高的DPI或其他任何情况),我不知道这个值是否会更改为默认光标.我在NSCursor上结束了这个类别:
- (BOol) isDefaultCursor{ NSPoint defaultCursorHotspot = [[NSCursor arrowCursor] hotSpot]; return NSEqualPoints(defaultCursorHotspot,[self hotSpot]);}
除此之外,还有一个_flags.cursorType实例变量,但它受到保护.而且,正如您已经提到的那样,当前的系统游标不一定是-isEqual:自身.
总结以上是内存溢出为你收集整理的macos – 如何在Mac OS X中获取当前类型的鼠标光标?全部内容,希望文章能够帮你解决macos – 如何在Mac OS X中获取当前类型的鼠标光标?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)