Instance Method


Requests the receiving responder to enable or disable the specified command in the user interface.


- (BOOL)canPerformAction:(SEL)action withSender:(id)sender;



A selector that identifies a method associated with a command. For the editing menu, this is one of the editing methods declared by the UIResponderStandardEditActions informal protocol (for example, copy:).


The object calling this method. For the editing menu commands, this is the shared UIApplication object. Depending on the context, you can query the sender for information to help you determine whether a command should be enabled.

Return Value

YES if the command identified by action should be enabled or NO if it should be disabled. Returning YES means that your class can handle the command in the current context.


This default implementation of this method returns YES if the responder class implements the requested action and calls the next responder if it does not. Subclasses may override this method to enable menu commands based on the current state; for example, you would enable the Copy command if there is a selection or disable the Paste command if the pasteboard did not contain data with the correct pasteboard representation type. If no responder in the responder chain returns YES, the menu command is disabled. Note that if your class returns NO for a command, another responder further up the responder chain may still return YES, enabling the command.

This method might be called more than once for the same action but with a different sender each time. You should be prepared for any kind of sender including nil.

For information on the editing menu, see the description of the UIMenuController class.

See Also

Building and Validating Commands

- buildMenuWithBuilder:

Asks the receiving responder to add and remove items from a menu system.

- validateCommand:

Asks the receiving responder to validate the command.

- targetForAction:withSender:

Returns the target object that responds to an action.