我如何确定哪个UIControlEventstypes导致了一个UIEvent?
我想要做的是设置一堆UIControl
对象,通过相同的处理程序发送所有事件。 该处理程序需要根据触发的UIControlEvents
types确定适当的操作。
- (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
的子类,因为这是我想要做的严重矫枉过正。 其余的运动部件并不那么重要, 我想要的是在以下设置中使用target:action:
pair之后检查UIControlEvents
的方法:
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
如果有一个不同的方式来设置一个target:action:
发回UIControlEvents
,我会采取的。 但是我没有在文档中看到它。 或者,至less可以在UIControl
对象之外访问,以便获得我想要的types。
你是对的 UIEvent.type
不能这样工作。 在内部, UIControl
子类基本上使用sendActionsForControlEvents:
方法,这意味着他们可以select把他们想要的任何东西作为参数。
至于如何知道,简单的答案是每个控制事件都有一个单独的方法。