2016-11-18 38 views
0

我在NSViewController中使用NSTextField。我想捕獲特殊的鍵盤快捷鍵,如⌥+ 0來做一些特殊的事情。然而,這些關鍵事件沒有得到傳遞到:NSTextField內部的捕獲選項/命令鍵

- (BOOL) control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector

我知道我們不能覆蓋keyDown事件自定義的NSTextField,因爲一個特殊的字段編輯器來代替我們的領域中使用的反正。如何處理這些特殊的快捷方式,而不訴諸在主菜單中添加隱藏的NSMenuItem

回答

0

看起來像一件簡單的事情,顯然不是在Mac上。使用自定義NSFormatter將不起作用,因爲我想捕獲每個擊鍵(包括修改鍵)。手頭的兩個選項是攔截sendEvent,NSWindow級別並將其展開到託管集中控件的視圖控制器或使用自定義字段編輯器。我最終返回了NSTextField的自定義字段編輯器(通過繼承NSTextField/NSTextFieldCell並返回字段編輯器的子類NSTextView對象)。通過這種方式,我可以乾淨地使用委託,攔截擊鍵並將它們傳遞給視圖控制器進行處理。不會被使用的擊鍵將通過場編輯器正常處理。