Я хочу настроить группу объектов 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
, чтобы я мог получить нужный мне тип.