Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Swift和我的空闲计时器实现(缺少CGEventType)_Objective C_Macos_Swift_Cocoa_Appkit - Fatal编程技术网

Objective c Swift和我的空闲计时器实现(缺少CGEventType)

Objective c Swift和我的空闲计时器实现(缺少CGEventType),objective-c,macos,swift,cocoa,appkit,Objective C,Macos,Swift,Cocoa,Appkit,在objective-c中,我使用以下CoreGraphics调用实现空闲计时器: CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType); 现在在swift中,使用相同的基本调用,它看起来像: CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionSt

在objective-c中,我使用以下CoreGraphics调用实现空闲计时器:

CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
现在在swift中,使用相同的基本调用,它看起来像:

CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, CGEventType.MouseMoved)
在检查了头文件(例如定义了CGEventType)之后,我找不到任何常量,这些常量以我在ObjC实现中能够执行的形式执行任何操作


现在我可能可以通过查找常数的值来解决这个问题,然后像这样进行,但我强烈希望不要这样做。我宁愿用IOKit重写它看起来基本上被定义为(~0),但正如前面提到的,我不想硬编码它。

因为
~0
定义是一个头定义(在CGEventTypes.h中),所以不太可能更改,因为这样做会破坏二进制兼容性。硬编码该值应该是安全的

因此,问题是获取一个表示
kCGAnyInputEventType
(aka
~0
)的CGEventType

以下是一种合理的类型安全表示方式:

let anyInputEventType = CGEventType(rawValue: ~0)!
CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, anyInputEventType)

看起来这段代码没有为Swift添加注释,并且该用例已被破坏。我会用雷达。这就是说,它看起来像是
CGEventType。点击DisabledByuserInput
kCGAnyInputEventType
具有相同的值。你能看到它是否有效吗?@BrianNickel看起来它给出了期望的结果,但使用似乎要用于其他东西的东西确实让人感到相当害怕。。。我想我将来会看到的。