iOS6上的IOHIDEventSystemCreate失败了[英] IOHIDEventSystemCreate on iOS6 failed

本文是小编为大家收集整理的关于iOS6上的IOHIDEventSystemCreate失败了的处理方法,想解了iOS6上的IOHIDEventSystemCreate失败了的问题怎么解决?iOS6上的IOHIDEventSystemCreate失败了问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

IOHIDEventSystemCreate 在 iOS6 上总是返回 NULL(在 iOS5 上工作正常).有谁知道为什么?

iPhoneDevWiki 上的示例

#include <IOKit/hid/IOHIDEventSystem.h>
#include <stdio.h>

void handle_event (void* target, void* refcon, IOHIDServiceRef service, IOHIDEventRef event) {
  // handle the events here.
  printf("Received event of type %2d from service %p.\n", IOHIDEventGetType(event), service);
}

int main () {
  // Create and open an event system.
  IOHIDEventSystemRef system = IOHIDEventSystemCreate(NULL);
  IOHIDEventSystemOpen(system, handle_event, NULL, NULL, NULL);

  printf("HID Event system should now be running. Hit enter to quit any time.\n");
  getchar();

  IOHIDEventSystemClose(system, NULL);
  CFRelease(system);
  return 0;
}

推荐答案

是的,对我来说它在 iOS6 上也不起作用.我现在用这个:

void *system = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
IOHIDEventSystemClientScheduleWithRunLoop(system, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
IOHIDEventSystemClientRegisterEventCallback(system, handle_event, NULL, NULL);
CFRunLoopRun();

但我不知道为什么它只报告多点触控+键盘事件.iOS6 中的 SpringBoard 称之为:

IOHIDEventSystemClientSetMatchingMultiple(system, array);

使用包含 PrimaryUsagePage + PrimaryUsage 的数组,但我无法让它工作...例如,如果有人知道获取加速度计事件的解决方案,我也很感兴趣.

本文地址:https://www.itbaoku.cn/post/924460.html