验证 NSTextField 中的小数最大/最小值
首先,我必须在没有 IB 和先进的 Objective-C 技术(如 KVO)的情况下做到这一点。
我的问题来自一个简单的事实,即我无法找到获取文本字段的全新字符串值的方法。
我尝试使用委托函数:
- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString
但这并没有给我只提供替换字符串,而不是我需要验证的完整字符串。我稍后可以使用
我找到的
- (void)textDidChange:(NSNotification *)aNotification
- (void)controlTextDidChange:(NSNotification *)aNotification
文本,但是当我接到这个电话时,已经太晚了,最后一个文本字段内容已经消失了。那么处理这个问题的最佳方法是什么?
是的,我确实阅读了 将 NSTextField 绑定到 NSNumber 但它不给我任何线索如何解决我的问题。
我需要的只是一个简单的“- (BOOL)acceptNewValue(NSString string)”测试函数。为什么 Cocoa 的一切都如此复杂,以至于开始感觉像 MFC。
First of all i have to do this without IB and without advanced Objective-C techniques like KVO.
My problem comes from the simple fact that i can't find a way to get the whole new string value of the text field.
I'm tried using the delegate function:
- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString
but this does not give me only the replacement string not the full string i need for validation. I can later use text
I found
- (void)textDidChange:(NSNotification *)aNotification
- (void)controlTextDidChange:(NSNotification *)aNotification
but when i get this calls it is already to late and the last text field content is already gone. So what is the best way to handle this?
And yes i did read binding NSTextField to NSNumber but it gives me no clue how to solve my problem.
All i need is a simple "- (BOOL)acceptNewValue(NSString string)" testing function. Why is everything so complicated with Cocoa it starts to feel like MFC.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的意思是实现该方法。使用它就意味着调用它,这是 NSTextView 的工作,它是一个 Objective-C 方法,而不是一个 C 函数。
除非确实如此:您可以询问文本视图 之前的完整字符串, 自己应用更改到该字符串的可变副本,然后验证结果字符串。如果更改会导致无效输入,则返回
NO
。You mean implementing the method. Using it would mean calling it, which is NSTextView's job, and it's an Objective-C method, not a C function.
Except it does: You can ask the text view for the previous complete string, apply the change yourself to a mutable copy of that string, and then validate the resulting string. Return
NO
if the change would result in invalid input.