2011-07-07 16 views
1

我想在我的ObjC應用程序中禁用在菜單欄中剪切和/或粘貼。我知道這可能在iOS中使用 - (BOOL)canPerformAction:(SEL)aSelector withSender:(id)發件人在ObjC中禁用剪切和/或粘貼

有沒有類似的MacOS?

謝謝

回答

2

還有就是NSUserInterfaceValidations Protocol,用於驗證項目的通用協議。您只需實施validateUserInterfaceItem:方法並返回NO即可禁用該操作。

- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem { 
    if([anItem action] == @selector(cut:) || 
     [anItem action] == @selector(copy:) || 
     [anItem action] == @selector(paste:)) return NO; 
    return [self respondsToSelector:[anItem action]]; 
} 

還有一個NSMenuValidation Protocol,它執行相同的功能,但僅用於驗證的菜單項,而不是所有界面項目。如果你沒有實現它,系統將回退到標準驗證。

+0

我馬上試試,非常感謝! :) – user732274

+0

不好意思,我要在哪裏放這段代碼?在應用程序委託?我從來沒有使用這個協議,所以我不知道從哪裏開始。我必須以某種方式「連接」菜單項嗎?謝謝 – user732274

+0

他們應該被置於任何接受行動的位置。這通常是包含數據的控件,如文本視圖,但可以是文檔或窗口控制器。如果您打算讓它們始終禁用,您可以將目標更改爲其他對象,以便您只需將方法添加到一個對象。 – ughoavgfhw

相關問題