系統提供的文本菜單通過發送諸如changeFont:modifyFont:和addFontTrait之類的消息來工作,直到它到達NSTextView爲止。我想擴展它來控制我的NSOutlineView中的行樣式,但我只能夠覆蓋changeFont:在我的窗口控制器中,並截獲消息(也許是一個更好的地方做到這一點,但它現在的作品) 。這適用於更改字體,但其他菜單項(如Bold,Bigger,Smaller)使用modifyFont:和addFontTrait:並不會在窗口控制器中調用,因此我無法修改它們的行爲以在大綱視圖上工作。有趣的是,他們看起來可以在菜單中選擇,但只調用了changeFont:並且據我所知,我需要從方法modifyFont:和addFontTrait:的發件人NSMenuItem中獲取標籤值。可可文本菜單和在NSOutlineView中修改字體
有誰知道如何通過讓其他方法在任何地方被調用來實現這個功能嗎?謝謝!
我想實現這個解決方案,看看它是否工作,但我不能設置類使用setFontManagerFactory,因爲一個錯誤「共享的NSFontManager實例已經存在。忽略+ [NSFontManager setFontPanelFactory:] ... 「。這是從applicationWillFinishLaunching調用指定的文檔,但我擔心看似錯誤的錯誤信息,建議我在調用setFontManagerFactory時調用setFontPanelFactory。你能夠在你的代碼中調用這個方法嗎?謝謝! –
GenericPtr
2015-03-03 03:55:15
在NSApplicationMain爲我工作之前調用setFontManagerFactory,現在我正在調用那些我想要的方法。我應該能夠弄清楚如何獲得我想要的結果,即使我不得不做一些有點冒險的工作。謝謝! – GenericPtr 2015-03-03 04:01:13
我看到和你一樣的東西。問題在於字體管理器是從MainMenu NIB引用的。必須在任何應用程序委託方法(如'-applicationWillFinishLaunching:')被調用之前加載,因爲應用程序委託在NIB中實例化,並且在那裏也被設置爲委託。你必須在'main()'中執行。 – 2015-03-03 04:01:32