【发布时间】:2017-09-25 14:30:58
【问题描述】:
我正在使用它来检测我的应用程序上的击键...
[NSEvent addLocalMonitorForEventsMatchingMask:NSEventMaskKeyDown
handler:^NSEvent * (NSEvent * theEvent)
好的,我可以使用theEvent 来了解输入了哪些字符,并了解是否使用此方法按下了换档:
NSString *typedKey = theEvent.charactersIgnoringModifiers;
BOOL shiftDetected = [theEvent modifierFlags] & NSShiftKeyMask;
我的应用程序有一个显示一些按钮的界面,我允许使用键盘而不是单击按钮。该界面有 3 个按钮,特别是具有第二个功能的按钮。
例如:第一个按钮有 2 个功能,A 和 B,但该按钮上仅显示 A 标签。假设我指定字母 Q 是该按钮的键盘快捷键。如果用户按下Q,则执行函数A。如果用户按下Shift Q,则会执行函数B。
但这就是问题所在。我需要检测Shift 的所有按下或释放,因为用户按下Shift 的那一刻我必须将该按钮的标签从A 更改为B,所以用户知道现在该按钮将导致执行函数B 而不是A。就像键盘会在 Shift 被按住时从小写变为大写,而在释放 Shift 时又变为小写。
我该怎么做?
【问题讨论】: