2013-10-15 194 views
1

當用戶點擊按鈕時,我可以捕獲字符串。 我也使用下面的方法如何在NSTextField中實時捕獲用戶輸入?

- (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor 

其中NSControlTextEditingDelegate協議中聲明。 當用戶開始編輯時,該按鈕將可用。

我的問題是: 如何使用戶刪除所有文本時禁用按鈕(使textField爲空而無需點擊按鈕)?

上述方法似乎不能這樣做......這是由文本字段發佈

+0

可能重複http://stackoverflow.com/問題/ 11487443/text-change-notification-for-nstextfield) –

回答

1

查看使用NSControlTextDidChangeNotificationcontrolTextDidChange:委託方法(從NSControl)。當您收到回叫時,您可以檢查當前字段中的文本以決定要執行的操作。

+0

嗨Wain,它像你說的那樣工作。 – Strong

2

如果您的NSTextNSTextView,您也可以使用NSTextDelegate ProtocolNSTextViewDelegate Protocol

除其他外,NSTextDelegate協議聲明此委託方法:

textDidChange:

通知該文本對象已經改變了文字或格式屬性的委託。

- (void)textDidChange:(NSNotification *)aNotification

討論

aNotification的名稱是NSTextDidChangeNotification。

NSTextDidChangeNotification記錄在這裏NSTextDidChangeNotification

+0

它的工作。謝謝! – Strong

0

很多方法可以做到同樣的事情。這個版本可以讓你輕鬆捕捉特定的關鍵擊鍵。

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString{ 
    NSLog(@"last character entered: %@",replacementString); 
} 

舉例來說,如果你正爲返回鍵,你可能會再執行:

if ([replacementString characterAtIndex:0] == NSNewlineCharacter) 
    NSLog(@"return pressed"); 
的[爲文本的NSTextField變更通知(
相關問題