这对我来说真的很奇怪,我一直无法弄明白.使用事件点击的例子很少,所以任何建议都非常感谢.
#import "DemoAppDelegate.h"CGEventRef myCGEventCallback(CGEventTapProxy proxy,CGEventType type,CGEventRef event,voID *refcon) { CGPoint location = CGEventGetLocation(event); NSLog(@"location: (%f,%f) - %@\n",location.x,location.y,(Nsstring*)refcon); return event;}@implementation DemoAppDelegate@synthesize window;- (voID)applicationDIDFinishLaunching:(NSNotification *)aNotification { CFMachPortRef eventTap; CGEventMask eventMask; CFRunLoopSourceRef runLoopSource; eventMask = 1 << kCGEventleftMouseDown; eventTap = CGEventTapCreate(kCGSessionEventTap,kCGheadInsertEventTap,1,eventMask,myCGEventCallback,@"mydata"); runLoopSource = CFMachPortCreateRunLoopSource(kcfAllocatorDefault,eventTap,0); CFRunLoopAddSource(CFRunLoopGetCurrent(),runLoopSource,kcfRunLoopCommonModes); CGEventTapEnable(eventTap,true); CFRunLoopRun();}@end解决方法 当您创建Cocoa应用程序时,– [NSApplication run]负责运行事件循环 – 它运行运行循环,并调度事件.这意味着你应该删除它
CFRunLoopRun();
调用-applicationDIDFinishLaunching:方法实现的底部,因为它阻止-applicationDIDFinishLaunching:返回并且还阻止NSApplication调度事件.
总结以上是内存溢出为你收集整理的cocoa – CGEventTap阻止应用程序输入全部内容,希望文章能够帮你解决cocoa – CGEventTap阻止应用程序输入所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)