得到了蘋果的答案:(basicaly這將是更爲複雜做到這一點的NSViewController,所以我只是實現它在NSWindowController)
============= ================================================== ==============
您的自定義類在應用程序的生命週期的早期調用了 - [NSApplication registerServicesMenuSendTypes:returnTypes:],就像在其初始化方法中一樣?
你說你期望-validRequestorForSendType:returnType:在窗口和視圖控制器(而不是窗口或視圖,本身)上被調用。但是,這不一定完成。根據文檔,該消息被髮送到響應者鏈中的對象,並且NSApplication被記錄爲將其發送給其委託人,並且NSWindow將其發送給其委託人。需要注意的是,窗口控制器不一定是它所控制的窗口的代表。有可能。這樣設置可能很常見。但它不是由框架自動完成的。所以,如果你想讓窗口控制器接收-validRequestorForSendType:returnType :,你需要確保它是窗口的委託。
我看不出任何暗示NSView會將該消息轉發給其控制器。當然,通用視圖沒有委託。即使對於那些具有委託的特定類型的視圖(例如NSTabView),也沒有任何將其-voiceRequestorForSendType:returnType視圖發送給其代表的文檔。所以,如果你想要一個視圖控制器接收-validRequestorForSendType:returnType:,你必須確保它在響應者鏈中(或者寫一個自定義視圖子類,專門將該消息轉發給它的控制器)。