[英]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.