Пойдем с самого начала
Создан новый проект Xcode, создатель открытого интерфейса перетянул один NSButton и один NSTextField поверх NSWindow.
Создано ....., ОК, это мой следующий код
#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 к моему объекту SampleTextFieldButtonAppDelegate
действие кнопки подключено к элементу управления NSButton.
Назначенная кнопка клавиши Эквив. вернуть / ввести ключ
Запустил XCode, изначально текстовое поле сфокусировано, нажата клавиша табуляции на клавиатуре, фокус изменен на кнопку, снова нажата клавиша табуляции, фокус перешел к textField. На этот раз я набрал текст в поле и нажал клавишу возврата.
См. Следующее сообщение в журнале, которое я получил,
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 Кнопка SampleTextFieldB [1845: a0f]
Почему вызывается действие кнопки, когда я взаимодействую со своим NSTextField? Пожалуйста, дайте мне какое-то решение для этого.