Here's some quick code that describes the bits in a UIControlEvents bitmask:
- (NSString *)describeEvents:(UIControlEvents)event {
NSDictionary *events = @{@0: @"UIControlEventTouchDown",
@1: @"UIControlEventTouchDownRepeat",
@2: @"UIControlEventTouchDragInside",
@3: @"UIControlEventTouchDragOutside",
@4: @"UIControlEventTouchDragEnter",
@5: @"UIControlEventTouchDragExit",
@6: @"UIControlEventTouchUpInside",
@7: @"UIControlEventTouchUpOutside",
@8: @"UIControlEventTouchCancel",
@12: @"UIControlEventValueChanged",
@13: @"UIControlEventPrimaryActionTriggered",
@16: @"UIControlEventEditingDidBegin",
@17: @"UIControlEventEditingChanged",
@18: @"UIControlEventEditingDidEnd",
@19: @"UIControlEventEditingDidEndOnExit"};
NSMutableString *result = [[NSMutableString alloc] init];
for(int i = 0; i<sizeof(UIControlEvents) * CHAR_BIT; i++) {
if((event & ((NSUInteger)1 << i)) != 0) {
NSString *eventName = [events objectForKey:[NSNumber numberWithInt:i]];
if(!eventName)
eventName = [NSString stringWithFormat:@"%i", i];
if(result.length > 0)
[result appendString:@", "];
[result appendString:eventName];
}
}
return result;
}
Example output:
[self describeEvents:UIControlEventTouchCancel] // UIControlEventTouchCancel
[self describeEvents:UIControlEventAllTouchEvents] // UIControlEventTouchDown, UIControlEventTouchDownRepeat, UIControlEventTouchDragInside, UIControlEventTouchDragOutside, UIControlEventTouchDragEnter, UIControlEventTouchDragExit, UIControlEventTouchUpInside, UIControlEventTouchUpOutside, UIControlEventTouchCancel, 9, 10, 11
[self describeEvents:UIControlEventAllEvents] // UIControlEventTouchDown, UIControlEventTouchDownRepeat, UIControlEventTouchDragInside, UIControlEventTouchDragOutside, UIControlEventTouchDragEnter, UIControlEventTouchDragExit, UIControlEventTouchUpInside, UIControlEventTouchUpOutside, UIControlEventTouchCancel, 9, 10, 11, UIControlEventValueChanged, UIControlEventPrimaryActionTriggered, 14, 15, UIControlEventEditingDidBegin, UIControlEventEditingChanged, UIControlEventEditingDidEnd, UIControlEventEditingDidEndOnExit, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31