- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我做了一个 nstextfield 的子类,我重写了 keydown 事件,但我的代码不起作用,然后我重写了 de keyup 事件,代码完美运行。我的按键代码(不起作用):
-(void)keyDown:(NSEvent *)event {
NSLog(@"Key released: %hi", [event keyCode]);
if ([event keyCode]==125){
[[self window] selectKeyViewFollowingView:self];
}
if ([event keyCode]==126){
[[self window] selectKeyViewPrecedingView:self];
}
}
我的 keyup 代码(有效):
-(void)keyUp:(NSEvent*)event
{if ([event keyCode]==125){
[[self window] selectKeyViewFollowingView:self];
}
if ([event keyCode]==126){
[[self window] selectKeyViewPrecedingView:self];
}
if ([event keyCode]==36){
[[self window] selectKeyViewFollowingView:self];
}
}
我看不出我的 keydown 代码哪里有问题。任何建议都将被接受
编辑:我读到你必须继承 NSTextView 而不是 NSTextField。
最佳答案
您可以使用 NSTextFieldDelegate 方法在不进行子类化的情况下完成此操作:
正如@Darren Inksetter 所说,您可以使用 control:textView:doCommandBySelector:
首先,在您的界面标签中声明 NSTextFieldDelegate。然后实现方法:
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector
{
if( commandSelector == @selector(moveUp:) ){
// Do yourthing here, like selectKeyViewFollowingView
return YES; // Return YES means don't pass it along responders chain. Return NO if you still want system's action on this key.
}
if( commandSelector == @selector(moveDown:) ){
// Do the same with the keys you want to track
return YES;
}
return NO;
}
关于objective-c - 覆盖 NSTextfield 中的 keydownevent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914916/
尝试将 raiseEvent 发送到 textBox - 但我没有在 textBox 文本中看到键值。我可以看到文本框事件“OnKeyDownEvent”在断点处停止 - 但我不明白为什么 KeyEv
我做了一个 nstextfield 的子类,我重写了 keydown 事件,但我的代码不起作用,然后我重写了 de keyup 事件,代码完美运行。我的按键代码(不起作用): -(void)keyDo
我有一个 TextBox(多行),如果我按 Ctrl+Enter,它只会换行。但我也想在 Shift+Enter 上执行此操作。我试过: messageTextBox_KeyDown(null, ne
我是一名优秀的程序员,十分优秀!