当Caps-Lock打开并按住shift键,然后按一个键……该键以大写字母形式出现,但SHIFT和CAPS标志都返回FALSE.
//For testing which flags are on.//Holding down Shift and Caps for some reason = FALSE FALSE...NSUInteger flags = [NSEvent modifIErFlags] & NSDeviceIndependentModifIErFlagsMask;if( flags == NSShiftKeyMask ){ NSLog(@"Shift - TRUE");} else { NSLog(@"Shift - FALSE");}if( flags == NSAlphaShiftKeyMask ){ NSLog(@"CAPS - TRUE");} else { NSLog(@"CAPS - FALSE");}return newUserKeypress;
所以,
-Cap-Lock打开(指示灯亮)
-Shift被压制住了
– 点击[e]键
– 输出为“E”
– 上面代码的输出为FALSE FALSE.
使用shift OR caps正确报告值.为什么没有正确报告它们?如果它们都关闭了……为什么这封信仍然被大写?
如果出于某种原因这是正确的……除了按住按键和按下按键之外,我怎么能告诉正常的按键呢? (它们具有相同的FALSE-FALSE标志)
解决方法 你不想使用==,你需要使用按位运算符:if( flags & NSShiftKeyMask ){...if( flags & NSAlphaShiftKeyMask ){总结
以上是内存溢出为你收集整理的objective-c – NSEvent修饰符标志 – 按住Shift和Caps-Lock时的错误?全部内容,希望文章能够帮你解决objective-c – NSEvent修饰符标志 – 按住Shift和Caps-Lock时的错误?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)