簡體   English   中英

我怎樣才能使具有焦點的NSTextField重繪呢?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM