2010-08-31 95 views
0

首先,我必須在沒有IB的情況下執行此操作,並且不需要像KVO這樣的高級Objective-C技術。驗證NSTextField中的十進制最大/最小值

我的問題來自一個簡單的事實,我無法找到一種方法來獲取文本字段的全新字符串值。

我使用委託函數嘗試:

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString 

但是這並沒有給我的只有替換字符串不完整的字符串我需要驗證。後來我纔可以使用文字

我發現

- (void)textDidChange:(NSNotification *)aNotification 
- (void)controlTextDidChange:(NSNotification *)aNotification 

但是當我得到這個電話已經是晚期最後文本字段的內容已經不見了。那麼處理這個問題的最好方法是什麼?

是的,我確實讀了binding NSTextField to NSNumber但它沒有讓我知道如何解決我的問題。

我所需要的只是一個簡單的「 - (BOOL)acceptNewValue(NSString字符串)」測試函數。爲什麼一切都如此複雜的可可它開始感覺像MFC。

回答

3

我使用委託函數嘗試:

你的意思是實現該方法。使用它意味着調用它,這是NSTextView的工作,它是一個Objective-C方法,而不是C函數。

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString 

但是這並沒有給我的只有替換字符串不完整的字符串我需要驗證。

除了它:你可以向文本視圖the previous complete stringapply the change yourself該字符串的可變副本,然後驗證結果字符串。如果更改會導致無效輸入,則返回NO

+0

謝謝你解決了這個問題。但我有一個新的 http://stackoverflow.com/questions/3605571/how-to-set-nsformatter-to-accept-negative-integer-values – Lothar 2010-08-31 02:10:08