How to define a class that sends an action like NSButton?
In Cocoa, how do you define a class that sends an action? I want to be able to connect the action to the selector of another object in IB in the style of NSButton. I would prefer not to subclass NSControl i开发者_开发问答f possible.
- Give it a property (informal is fine) holding an
id
, for the target. I'm not sure whether this should retain or not; I'd say no, since the target will normally be the controller that owns the window that (indirectly) owns the view. - Give it a property (informal in fine) holding a
SEL
, for the action. - Respond to
mouseUp:
andkeyDown:
(checking that the key in question is the space bar or return or enter) by sending yourself anaccessibilityPerformAction:
message, passingNSAccessibilityPressAction
. - Respond to the
accessibilityPerformAction:
message by either sending your action message to your target (NSAccessibilityPressAction
) or calling up tosuper
(other), as described in the documentation for that method.
You should also implement the rest of the NSAccessibility protocol while you're at it. Test that work with a mix of the Accessibility Inspector and VoiceOver.
精彩评论