Мэтт С. прав, если вы можете использовать API NSEvent
для определения местоположения мыши. Тем не менее, вам не нужно опрашивать, чтобы постоянно получать координаты. Вы можете использовать CGEventTap
вместо:
- (void) startEventTap {
//eventTap is an ivar on this class of type CFMachPortRef
eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionListenOnly, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
CGEventTapEnable(eventTap, true);
}
CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
if (type == kCGEventMouseMoved) {
NSLog(@"%@", NSStringFromPoint([NSEvent mouseLocation]));
}
return event;
}
Таким образом, ваша функция myCGEventCallback
будет срабатывать при каждом перемещении мыши (независимо от того, находится ли ваше приложение на переднем крае), без необходимости запрашивать информацию. Не забудьте CGEventTapEnable(eventTap, false)
и CFRelease(eventTap)
, когда закончите.