[英]How can I make an NSTextField that has focus redraw itself?
我已经继承并定义了自己的自定义NSFormatter和NSTextField类,以便正确显示SMPTE时间码值( HH:MM:SS:FF
)。 当用户选择使用丢帧作为fps值时,格式更改为HH:MM:SS;FF
(末尾为分号)。 除了最后的一个障碍,我的所有工作都很好。
更改格式时,具有焦点的NSTextField不会更新,直到失去焦点为止。 这是说明的屏幕截图:
我尝试过在格式更改时向NSTextField发送setNeedsDisplay
消息,以及向其发送display
消息。 到目前为止,似乎没有任何工作,并且具有焦点的文本字段拒绝更新/重绘自身,直到失去焦点。
我需要做些什么才能做到这一点?
我确实设法解决了这个问题。 可能有点骇人听闻,但是我最终要做的基本上是使用currentEditor
检索NSTextField
的字段编辑器,并将其作为对象发送,并在格式更改时发布通知。
然后,使用字段编辑器将它replaceCharactersInRange:withString:
为replaceCharactersInRange:withString:
将最后一个“:”更改为“;”。 反之亦然。 尽管它可能不是最佳选择,但它可以完美运行。
实际上,我已将解决方案发布给github,以供其他可能觉得有用的人使用。 https://github.com/cfloisand/smpteformatter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.