Как я могу определить, какой тип UIControlEvents вызвал UIEvent?

Я хочу настроить группу объектов UIControl для отправки всех событий через один и тот же обработчик. Этому обработчику необходимо определить, какое соответствующее действие основано на сработавшем типе UIControlEvents .

- (void)handleEventFromControl:(id)sender withEvent:(UIEvent *)event {
    UIControl *control = sender;
    NSIndexPath *indexPath = [controlIndexPaths objectForKey:control];
    UIControlEvents controlEventType = event.type; //PROBLEM HERE

    BOOL fire = NO;
    NSNumber *eventCheck = [registeredEventsByToolkitIndex objectAtIndex:indexPath.toolkit];
    fire = ([eventCheck integerValue] & controlEventType);

    if(!fire) {
        eventCheck = [registeredEventsByControlIndex objectAtIndex:indexPath.control];
        fire = ([eventCheck integerValue] & controlEventType);
    }

    if(!fire) {
        eventCheck = [registeredEventsByIndexPath objectForKey:indexPath];
        fire = ([eventCheck integerValue] & controlEventType);
    }

    if(fire) {
        [self.delegate toolkit:self indexPath:indexPath firedEvent:event];
    }
}

Насколько я могу судить, event.type таким образом не работает. . Я хочу избежать наличия подкласса UIControl , потому что это серьезный перебор для того, что я хочу делать. Остальные подвижные части здесь не так уж и важны; мне нужен способ проверки на UIControlEvents после того, как пара target: action: используется в следующей настройке:

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

Если есть другой способ настройки target: action: , который отправляет обратно UIControlEvents , я бы это сделал. Но я не вижу этого в документации. Или, по крайней мере, получить доступ вне объекта UIControl , чтобы я мог получить нужный мне тип.

10
задан MrHen 25 May 2011 в 22:05
поделиться