UIControl is a subclass of UIView whose chief purpose is to be the superclass of several further built-in classes representing views with which the user can interact (controls), endowing them with common behavior.

The most important thing that controls have in common is that they automatically track and analyze touch events (Chapter 18) and report them to the programmer as significant control events by way of action messages. Each control implements some subset of the possible control events (see Chapter 11 for a list of which control events are implemented by which controls); for each control event that you want to hear about automatically, you attach to the control one or more target–action pairs. You can do this in the nib (Chapter 7) or in code (Chapter 11).

For any given control, each control event and its target–action pairs form a dispatch table. The following methods permit you to manipulate and query the dispatch table:

  • addTarget:action:forControlEvents:
  • removeTarget:action:forControlEvents:
  • actionsForTarget:forControlEvent:
  • allTargets
  • allControlEvents (a bitmask of control events to which a target–action pair is attached)

An action selector may adopt any of three signatures (see Chapter 11). Disappointingly, none of these signatures provide a way to learn what control event triggered the current action selector call! Thus, for example, to distinguish a Touch Up Inside event from a Touch Up Outside event, you must dispatch them to two different action handlers; ...

Get Programming iOS 4 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.