我试图让我的应用程序的触摸事件。 所以我用了IOHIDFamily回调以获取事件。 我的代码是这样的:
void handle_event(void* target, void* refcon, IOHIDServiceRef service, IOHIDEventRef event)
{
printf("Received event of type %2d from service %p.\n",
IOHIDEventGetType(event), service);
}
- (void)viewDidLoad
{
[super viewDidLoad];
void *ioHIDEventSystem = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
IOHIDEventSystemClientScheduleWithRunLoop(system, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
IOHIDEventSystemClientRegisterEventCallback(system, handle_event, NULL, NULL);
CFRunLoopRun();
}
执行时,我得到了一个错误:
IOHIDEventSystemClientScheduleWithRunLoop(系统,CFRunLoopGetCurrent(),kCFRunLoopDefaultMode);
IOKit`IOHIDEventSystemClientScheduleWithRunLoop:
...
0x32f8fd14:CMP.W R10,#0
0x32f8fd18:STRD R10,R11,[R4,#116] <--- EXC_BAD_ACCESS(代码= EXC_ARM_DA_ALIGN)
0x32f8fd1c:BEQ 0x32f8fdac; IOHIDEventSystemClientScheduleWithRunLoop + 168
0x32f8fd1e:LDR R1,[R4,#96]
0x32f8fd20:CBZ R1,0x32f8fd2a; IOHIDEventSystemClientScheduleWithRunLoop + 38
0x32f8fd22:MOV R0,R10
...
难道我用IOHIDFamily在错误的道路?