2013-06-05 36 views
0

我試圖在我的NSView中捕獲CMD +和CMD-鍵盤操作 - 以增加和減小某些自定義文本的字體大小。由於各種原因,我不能簡單地使用NSTextView。有誰知道處理這個問題的正確方法?在NSView中處理CMD

據我所知,它們是菜單項的關鍵等價物。我可以通過實現changeFont'啓用'菜單項:我可以通過執行performKeyEquivalent陷阱按鍵:但這似乎有點破解。另外,當changeFont被調用時,我不清楚該如何解釋它被稱爲CMD +/-的事實,因爲它只是發送給我一個NSFontManager。讓我懷疑我是否處理了錯誤的信息?

在此先感謝。

+0

你看過子類''[NSView keyDown:]'嗎? – trojanfoe

+0

keyDown不會被CMD +/-調用,因爲它是一個關鍵的等價物(我相信)它也不能解決如何處理等效菜單選項Text-> Font-> Bigger/Smaller的情況直。謝謝 – Scotty

+0

NSFontManager的'-modifyFont:'消息說,當你收到'-changeFont:'動作消息時,你可以用你當前的字體調用NSFontManager的'-convertFont:'方法。它將返回一個基於用戶選擇修改的字體。 –

回答

1

Gerd(見上面的評論)讓我排序。在我的changeFont處理程序中,我創建了一個大小爲10的臨時字體,然後將其傳回給字體管理器,並檢查返回字體的大小。如果它比CMD +大,那麼按CMD +,如果它小於CMD-則按下。

- (void)changeFont:(id)sender 
{ 
    NSFontManager* fm = sender; 

    NSFont* fntBefore = [NSFont systemFontOfSize:10]; 
    NSFont* fntAfter = [fm convertFont:fntBefore]; 

    CGFloat delta = fntAfter.pointSize - fntBefore.pointSize; 
}