【发布时间】:2017-09-16 00:49:34
【问题描述】:
我无法在 NSView 的子类中接收键盘事件。
我可以很好地处理鼠标事件,但是我的 keyDown 和 keyUp 方法永远不会被调用。根据文档,我的理解是这两种类型的事件都遵循相同的层次结构,但情况似乎并非如此。
这是第一响应者问题吗?某个领域的某个地方抓住了焦点?我试过覆盖它,但没有运气。
任何见解将不胜感激。
如果您想查看.. 这是在自定义 NSView 类中:
#pragma mark -
#pragma mark I/O Events
-(void)keyDown:(NSEvent *)theEvent {
NSLog(@"Sup brah!");
}
-(void)keyUp:(NSEvent *)theEvent {
NSLog(@"HERE");
}
// This function works great:
-(void)mouseDown:(NSEvent *)theEvent {
NSNumber *yeah = [[NSNumber alloc] initWithBool:YES];
NSNumber *nah = [[NSNumber alloc] initWithBool:NO];
NSString *asf = [[NSString alloc] initWithFormat:@"%@", [qcView valueForOutputKey:@"Food_Out"]];
if ([asf isEqualToString:@"1"]) {
[qcView setValue:nah forInputKey:@"Food_In"];
best_food_x_loc = convertToQCX([[qcView valueForOutputKey:@"Food_1_X"] floatValue]);
best_food_y_loc = convertToQCY([[qcView valueForOutputKey:@"Food_1_Y"] floatValue]);
NSLog(@"X:%f, Y:%f",best_food_x_loc, best_food_y_loc);
} else {
[qcView setValue:yeah forInputKey:@"Food_In"];
}
}
【问题讨论】:
-
仅供参考,您的
mouseDown:方法正在泄漏内存。
标签: objective-c cocoa mouseevent