Requests the receiving responder to enable or disable the specified command in the user interface.
SDKs
- iOS 3.0+
- Mac Catalyst 13.0+
- tvOS 9.0+
Framework
- UIKit
Declaration
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender;
Parameters
action
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:
).sender
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.
Discussion
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 UIMenu
class.