我有一个自定义的 NSTextField,我在其中实现了一些圆角。
按“TAB”键不会转到窗口中的下一个 NSTextField(或可选控件)。奇怪的。为什么会这样做?当按下“TAB”时,我需要添加一些特别的东西来使应用程序能够通过其他控件吗?
我有一个自定义的 NSTextField,我在其中实现了一些圆角。
按“TAB”键不会转到窗口中的下一个 NSTextField(或可选控件)。奇怪的。为什么会这样做?当按下“TAB”时,我需要添加一些特别的东西来使应用程序能够通过其他控件吗?
希望您以编程方式或在 Xcode 的界面构建器中设置 nextKeyView,如下所示:
好像是我的错。
textDidBeginEditing:
我在and的自定义类中合并了委托调用textDidEndEditing:
,以便在用户跳出字段时维护占位符文本,但我也没有调用相应的超类的方法。
包括调用[super textDidEndEditing...]
和[super textDidBeginEditing...]
标签后工作正常。
我的解决方案不是一个很好的解决方案,但有效:
子类 NSTextView
#import <Cocoa/Cocoa.h>
@interface NMTextView : NSTextView
@end
#import "NMTextView.h"
@implementation NMTextView
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
- (void)keyDown:(NSEvent *)theEvent{
switch ([theEvent keyCode]) {
case 36:{
if (([theEvent modifierFlags] & NSCommandKeyMask))
//something for Ctrl+Enter
else
[super insertNewlineIgnoringFieldEditor:self];
}break;
case 48:
//[self nextKeyView] = _NSClipViewOverhangView
//[[self nextKeyView] nextKeyView] = NSTokenField (in my case)
// or something different
[[[self nextKeyView] nextKeyView] becomeFirstResponder];
//also http://stackoverflow.com/a/3008622/1067147
break;
case 53:
[_target performSelector:_actionEsc withObject:self];
break;
default:// allow NSTextView to handle everything else
[super keyDown:theEvent];
break;
}
}
#pragma clang diagnostic pop
@end