2

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

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

更改为丢帧格式

我尝试setNeedsDisplay在格式更改时向 NSTextField 发送消息,以及向其发送display消息。到目前为止似乎没有任何效果,并且带有焦点的文本字段拒绝更新/重绘自身,直到失去焦点。

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

4

1 回答 1

1

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

使用字段编辑器,我只需replaceCharactersInRange:withString:将最后一个“:”更改为“;” 反之亦然。虽然它可能不是最佳的,但它工作得很好。

事实上,我已经将解决​​方案发布到 github,供其他可能觉得这很有用的人使用。 https://github.com/cfloisand/smpteformatter

于 2013-05-22T16:09:19.743 回答