2010-01-30 97 views
2

我剛從OSX開發開始,並試圖從NSTextField獲取委託通知。我有下面的代碼至今:NSTextField代表問題

這是我設定的委託:

- (void) awakeFromNib { 
    NSLog(@"Setting delegate"); 
    [amountField setDelegate: [[TextfieldController alloc] initWithLog]]; 
} 

這是我TextfieldController:

- (TextfieldController *) initWithLog { 
    self = [super init]; 
    NSLog(@"TextfieldController initialized"); 
    return self; 
} 

- (void)textDidChange:(NSNotification *)aNotification { 
    NSLog(@"textdidChange"); 
} 


- (void)keyUp:(NSNotification *)aNotification { 
    NSLog(@"keyUp"); 
} 

然而,無論是textDidChange也不使用keyUp是有史以來調用...不知道我在這裏錯過了什麼,因爲當我用windowDidMiniaturize通知將它用於我的主窗口時,相同的方式工作得很好...

任何人都可以t幫助? :)

回答

13

代表應執行-controlTextDidChange:而不是-textDidChange:-textDidChange:方法是NSTextField上的一種方法,它導致它發佈通知並致電[self.delegate controlTextDidChange:]。至於-keyUp:,這是NSControl的事件處理行爲的一部分。如果您希望委託人在文本字段處理關鍵事件時收到消息,則需要自行安排NSTextField的子類別。