验证NSTextField中的十进制最大值/最小值

时间:2010-08-31 01:23:31

标签: cocoa nstextfield validating

首先,我必须在没有IB且没有像KVO这样的高级Objective-C技术的情况下这样做。

我的问题来自于一个简单的事实,即我无法找到获取文本字段的全新字符串值的方法。

我尝试使用委托功能:

- (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 string)”测试函数。为什么一切都如此复杂,Cocoa开始感觉像是MFC。

1 个答案:

答案 0 :(得分:3)

  

我尝试使用委托功能:

您的意思是实施该方法。使用它意味着调用它,这是NSTextView的工作,它是一个Objective-C方法,而不是C函数。

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

但这并不只给我替换字符串而不是我需要验证的完整字符串。

除此之外:您可以向the previous complete stringapply the change yourself的文本视图询问该字符串的可变副本,然后验证生成的字符串。如果更改会导致输入无效,则返回NO