我怎样才能使一个NSTextField焦点重绘本身?

为了正确显示SMPTE时间码值( HH:MM:SS:FF ),我已经分类并定义了自己的自定义NSFormatter和NSTextField类。 当用户选择使用drop-frame作为fps值时,格式将变为HH:MM:SS;FF (最后的分号)。 除了最后一个障碍之外,我的这一切都运行良好。

在更改格式时,具有焦点的NSTextField不会更新其显示,直到焦点丢失。 这里是一个截图来说明:

更改为丢帧格式

我已经尝试在格式更改时向NSTextField发送setNeedsDisplay消息,并且向它发送display消息。 目前为止似乎没有任何工作,并且具有焦点的文本字段拒绝更新/重绘本身,直到失去焦点。

我需要做什么来实现这一点的任何建议?


我现在设法解决了这个问题。 这可能有些破绽,但基本上我最终做的是用currentEditor检索NSTextField的字段编辑器,并将其作为一个对象发送,并发送格式更改时发布的通知。

随着字段编辑器,我只是把它replaceCharactersInRange:withString:将最后一个“:”更改为“;” 反之亦然。 虽然它可能不是最优的,但它完美地工作。

事实上,我已经将解决​​方案发布到github上,以供任何其他可能发现此功能的人使用。 https://github.com/cfloisand/smpteformatter

链接地址: http://www.djcxy.com/p/85245.html

上一篇: How can I make an NSTextField that has focus redraw itself?

下一篇: Binding NSTextField to NSString