验证 NSTextField 中的小数最大/最小值

发布于 2024-09-16 18:45:20 字数 803 浏览 6 评论 0原文

首先,我必须在没有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒中人 2024-09-23 18:45:20

我尝试使用委托函数:

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

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

但这并没有给我只提供替换字符串,而不是我验证所需的完整字符串。

除非确实如此:您可以询问文本视图 之前的完整字符串, 自己应用更改到该字符串的可变副本,然后验证结果字符串。如果更改会导致无效输入,则返回 NO

I'm tried using the delegate function:

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.

- (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.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文