Search code examples
iphoneiosipaduibuttonuievent

How to catch and handle all events of UIButton in a single method?


I want to have a single method for all the buttons (and all their events) of a view. So far this is what I've got:

- (IBAction)uibuttonEvent:(id)idSender forEvent:(UIEvent*)uieventHandle
{
    if (idSender == [self uibuttonConnectInput]) {
        if ([uieventHandle type] == UIEventTypeTouches) {
            [[self uibuttonConnectInput] setTitle:@"did it!" forState:UIControlStateNormal];
        }

    } else if (idSender == [self uibuttonSomething]) {
        ...

    }
}

So now I can detect whether the event is a UIEventTypeTouches or not, but I want to check more specifically whether it is e.g. UIControlEventTouchUpInside - how can I do that?


Solution

  • As discussed here the UIEvent that you get from UIButton doesn't give you any information about which UIControlEvent caused it. Either register separate methods for each event type (the recommended solution) or make your own subclass of UIControl and make it behave differently.