让我们从头开始
创建了新的Xcode项目,打开的界面构建器在NSWindow上拖动了一个NSButton和一个NSTextField。
创建.....,好的这是我的以下代码
#import <Cocoa/Cocoa.h>
@interface SampleTextFieldButtonAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
IBOutlet NSTextField *textField;
}
@property (assign) IBOutlet NSWindow *window;
- (IBAction)button:(NSButton *)myBtn;
@end
#import "SampleTextFieldButtonAppDelegate.h"
@implementation SampleTextFieldButtonAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
}
- (void)controlTextDidEndEditing:(NSNotification *)obj
{
NSString *textFieldString = [textField stringValue];
NSLog(@"controlTextDidEndEditing %@",textFieldString);
}
- (IBAction)button:(NSButton *)myBtn
{
NSLog(@"button");
}
@end
去接口Builder, 连接textField出口到NSTextField控件,并将textField的delegate outlet连接到我的SampleTextFieldButtonAppDelegate对象 连接按钮动作到NSButton控件。
指定按钮键等效。返回/输入密钥
跑到XCode,最初文本域被聚焦,从键盘按下Tab键,焦点已更改为按钮,按下tab键再次焦点转到textField。这次我在我的文本字段中键入了一些文本并按了Return键。
请参阅以下日志消息,
2012-03-31 15:37:37.723 SampleTextFieldButton [1845:a0f] controlTextDidEndEditing 2012-03-31 15:37:41.601 SampleTextFieldButton [1845:a0f] controlTextDidEndEditing dasdj 2012-03-31 15:37:41.629 SampleTextFieldButton [1845:a0f]按钮
为什么在我与NSTextField交互时调用按钮操作?请给我一些解决方案。
答案 0 :(得分:1)
指定按钮键等效。返回/输入密钥
跑到XCode,最初文本域被聚焦,从键盘按下Tab键,焦点已更改为按钮,按下tab键再次焦点转到textField。这次我在文本字段中键入了一些文本并且按下返回键强>
为什么在我与NSTextField交互时调用按钮操作?
因为您按下了键盘的回车键。这就是为什么keypress equiv通常与修饰符(cmd,alt,shift)结合使用
想象一下,如果不是打印快捷键“cmd + p”,快捷方式就是“p”。我的电脑已经开始打印5次,写下这两行:)
您可以进行直接的键绑定,例如,当您构建游戏时,“z”用于更进一步,“q”向左转,等等,但请确保在文本编写期间不使用。只需在textDidBeginEditing事件上禁用按钮上的键绑定,然后将绑定放回textDidEndEditing。