gpt4 book ai didi

objective-c - 覆盖 NSTextfield 中的 keydownevent

转载 作者:太空狗 更新时间:2023-10-30 03:39:28 30 4
gpt4 key购买 nike

我做了一个 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com