验证 TextField 中的文本

发布于 2024-10-29 12:51:30 字数 315 浏览 1 评论 0原文

我的程序中有一个文本字段,它表示使用绑定的模型对象的文件名。我希望这个文本字段可用于输入新的文件名,并且在用户按 Enter 键后,它应该将消息发送到我的模型对象,表明文件名的值在我的文本字段中已更改,然后在我的模型对象中检查此类文件名是否可以的方法被使用称为。如果它返回 true,那么它应该将新值应用于我的模型对象,如果不是,那么我的 textField 中的值应该撤消到初始值。

有人知道如何实施吗?我可以验证我的值,但无法使我的文本字段刷新到初始值。至于更改模型对象值和 texField 刷新应该使用符合 KVC 的单一方法,我不知道如何实现这种行为。

任何帮助将不胜感激。

I have in my program a textfield which represents a fileName from a model object using bindings. I want that this textField could be used to enter a new fileName and after user presses Enter it should send the message to my model object that value of fileName has changed in my textField, then inside my model object the method for checking if such filename can be used is called. And if it returns true, then it should apply new value to my model object, if not, then value in my textField should undo to initial value.

Does somebody know how it could be implemented? I can validate my value but I can't make my textField refresh to initial value. As for both changing the model object value, and texField refreshing should be used single method which is KVC compliant I don't know how to implement such behaviour.

Any help would be very appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

猫弦 2024-11-05 12:51:30

对我来说,这听起来不是一个好的用户体验;作为用户,我会很沮丧地发现,如果我在文本字段中犯了一个简单的拼写错误,它就会完全删除我刚刚输入的内容。如果能显示一条消息来指出问题所在以及用户如何修复它,那就更好了。尽管如此......

我认为你应该设置一个文本字段委托。让委托保留一个变量来保存输入的最后一个有效字符串。然后在 textFieldShouldEndEditing: 中检查有效性,如果检查未通过,则将文本字段的值设置为该变量并返回 NO。如果通过,则更改变量以保存新的有效字符串并返回 YES。

This doesn't sound like a good UX to me; as a user, I would be upset to find that if I made a simple typo in a text field, it completely erased what I had just input. It would be much better to show a message indicating what was wrong and how the user can fix it. Nonetheless...

I think you should set up a text field delegate. Have the delegate keep a variable holding the last valid string that was input. Then in textFieldShouldEndEditing:, do your check for validity, and if the check does not pass, set the text field's value to that variable and return NO. If it does pass, change the variable to hold the new valid string and return YES.

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