首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使NSFormatter持续验证NSTextFieldCell

使NSFormatter持续验证NSTextFieldCell
EN

Stack Overflow用户
提问于 2010-05-19 20:11:59
回答 1查看 1.1K关注 0票数 4

在Cocoa中,我有一个单元格是NSTextFieldCell的NSOutlineView。单元格显示的值是根据特定规则格式化的字符串(例如浮点数或中间有空格的浮点数对)。我已经制作了一个自定义的NSFormatter来验证文本,这似乎没有问题。

但是,单元格(或大纲视图,我不确定是什么原因造成的)似乎只在我的编辑结束时使用格式化程序。如果我在文本字段中键入一些字母字符(这违反了格式规则),这些字符就会出现--我注意到格式化程序执行其工作的唯一原因是,我现在被阻止将键盘焦点从这个单元格上移开。如果我将单元格的内容返回到一个有效的表单,那么我就可以将焦点移开。

我已经将单元格和大纲视图都设置为“连续”。

如果我一开始就不能在单元格中输入文本,那就更好了。有没有可能做到这一点?如果可能,如何做到?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-19 22:58:10

回答我自己的问题,因为我找到了解决方案。在NSFormatter上有一个可选的方法可以覆盖,这解决了这个问题。可选方法为:

代码语言:javascript
复制
- (BOOL) isPartialStringValid: (NSString*) partialString
             newEditingString: (NSString**) newString
             errorDescription: (NSString**) error

在这里,如果partialString无效,可以简单地返回NO。如果需要,可以在newString中通过引用返回固定字符串。

还有另一种方法也可以使用,但它更复杂:

代码语言:javascript
复制
- (BOOL) isPartialStringValid: (NSString**) partialStringPtr
        proposedSelectedRange: (NSRangePointer) proposedSelRangePtr
               originalString: (NSString*) origString
        originalSelectedRange: (NSRange) origSelRange
             errorDescription: (NSString**) error
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2865294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档