0

我有一个用户指定的全局热键,想检查并确保它不会与其他应用程序发生冲突。是否有任何 API 可以向其他应用程序询问其快捷方式,或者我是否卡在手动检查所选快捷方式是否为常用快捷方式(Cmd+v、Cmd+C 等)?

谢谢

4

1 回答 1

1

您必须询问响应者链,特别是 [NSResponder tryToPerform:with:] 方法将返回是否有任何处理您的操作。不用担心其他应用在做什么,只需检查用户的快捷方式是否已在使用中即可。

tryToPerform:with: 尝试使用指定的参数执行操作指示的方法。

  • (BOOL)tryToPerform:(SEL)anAction with:(id)anObject 参数 anAction 标识操作方法的选择器。anObject 用作​​操作方法的唯一参数的对象。返回值 如果没有找到响应 anAction 的响应者,则返回 NO,否则返回 YES。

讨论 如果接收者响应一个Action,它会调用以anObject 作为参数的方法并返回YES。如果接收者没有响应,它会将此消息发送给具有相同选择器和对象的下一个响应者。

可用性 在 OS X v10.0 及更高版本中可用。另见 - doCommandBySelector: sendAction:to:from: (NSApplication) 在 NSResponder.h 中声明

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/nsresponder_Class/Reference/Reference.html#//apple_ref/occ/instm/NSResponder/tryToPerform:with

于 2012-08-07T12:27:41.560 回答