我搜索了整個互聯網上的東西沒有運氣。我試圖檢測用戶是否在Mac應用上點擊空格鍵。在Mac上檢測空格鍵事件?
-(void)keyDown:(NSEvent*)theEvent;
當用戶按下字符鍵,但沒有輸入或空格時效果很好。
-(BOOL)performKeyEquivalent:(NSEvent *)theEvent;
當用戶點擊回車鍵或方向鍵而不是空格鍵時被調用。
任何想法?
我搜索了整個互聯網上的東西沒有運氣。我試圖檢測用戶是否在Mac應用上點擊空格鍵。在Mac上檢測空格鍵事件?
-(void)keyDown:(NSEvent*)theEvent;
當用戶按下字符鍵,但沒有輸入或空格時效果很好。
-(BOOL)performKeyEquivalent:(NSEvent *)theEvent;
當用戶點擊回車鍵或方向鍵而不是空格鍵時被調用。
任何想法?
能得到它的工作通過繼承NSWindow和實施此方法:
- (void)sendEvent:(NSEvent *)theEvent
{
NSString* keysPressed = [theEvent characters];
if ([keysPressed isEqualToString:@" "])
{
if(theEvent.type==NSKeyDown)
NSLog(@"spaceDown");
if(theEvent.type==NSKeyUp)
NSLog(@"spaceUp");
}
}
您可以根據空格鍵常量使用其他循環與鍵號碼32。
if ([theArrow length] == 1)
{
keyChar = [theArrow characterAtIndex:0];
NSLog(@"Dentro2 %hu", keyChar);
switch (keyChar)
{
case 32: // Space Bar management
break;
}
}
// Manage when any key is dropped.
if(downOrUp == FALSE)
{
NSLog(@"Tecla soltada.");
self.playerVelocity = CGPointMake(0.0, 0.0);
}
// Methods to handle key push and key drop
- (void)keyDown:(NSEvent *)event
{
[self handleKeyEvent:event keyDown:YES];
}
- (void)keyUp:(NSEvent *)event
{
[self handleKeyEvent:event keyDown:NO];
}
如果你#include
我不由自主地絆了一下。奇怪的是,keyDown:
事件僅通過moby所述的方法檢測到。但是keyUp:
作品像空格鍵按下一個魅力
嘗試幾個解決方案後,我帶着一個din't打破其他東西對我來說
@import Carbon;
typedef void (^CustomWindowSpacebarKeyCallback)(NSEventType eventType);
@interface CustomWindow : NSWindow
@property (nonatomic, copy) CustomWindowSpacebarKeyCallback spacebarKeyCallback;
@end
@implementation CustomWindow
- (void) sendEvent:(NSEvent *)theEvent
{
[super sendEvent:theEvent];
if (([theEvent type] == NSKeyDown || [theEvent type] == NSKeyUp) && _spacebarKeyCallback) {
NSString *keysPressed = [theEvent characters];
if ([keysPressed length] == 1) {
unichar keyChar = [keysPressed characterAtIndex:0];
if (keyChar == kSpaceCharCode) {
_spacebarKeyCallback([theEvent type]);
}
}
}
}
@end
雖然這個解決方案引起了很多其他問題,因此,如果任何人都知道另一種方式,請分享。 – Snowman 2012-01-16 17:02:14
你有什麼發現? – 2012-12-14 18:27:03