2012-12-14 21 views
1

我有一個自定義的NSTextView實現,它自動調整字體大小,以便文本填充整個視圖。NSTextView textDidChange/didChangeText不需要綁定

我覆蓋了didChangeText來調用我的字體大小調整方法。當用戶編輯文本時非常有效,但當通過綁定設置文本視圖內容時,不會調用didChangeText(和委託方法textDidChange:)。

字體調整代碼需要在文本設置/更改時運行,而不僅僅是在用戶更改時。

即使通過綁定,我如何檢測NSTextView中文本的所有更改?

注意:如果有更好的方式讓文本填充整個文本視圖,而不是增加字體大小,請告訴我。

+0

您添加了嗎?並將NSTextView(而不是NSScrollView)的委託屬性與應接收委託的對象連接起來。 - (void)textDidChange:(NSNotification *)notification {NSLog(@「textDidChange called」); } –

+0

是的,我嘗試使用委託,但textDidChange:不通過綁定更新視圖時調用。 – Mark

回答

0

將字體屬性設置爲NSAttributedString將更好,該文本綁定到文本視圖的「attributesString」。在textDidChange:委託方法中,您可以使用正確的字體屬性重新創建NSAttributedString

+0

我正在做類似的事情。我的問題是,當最初設置文本視圖的內容時,我的字體調整代碼不會被調用。 – Mark

+0

如果你做得對,綁定屬性(即它的訪問器)將始終以正確的字體(你確定的)屬性返回NSAttributedString。 – user1885297

+0

綁定屬性是一個簡單的NSString,而不是NSAttributedString。儘管如此,我想設置一個自定義字體。 – Mark