首先,我必须在没有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。
答案 0 :(得分:3)
我尝试使用委托功能:
您的意思是实施该方法。使用它意味着调用它,这是NSTextView的工作,它是一个Objective-C方法,而不是C函数。
- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString
但这并不只给我替换字符串而不是我需要验证的完整字符串。
除此之外:您可以向the previous complete string,apply the change yourself的文本视图询问该字符串的可变副本,然后验证生成的字符串。如果更改会导致输入无效,则返回NO
。