[英]How can I determine which UIControlEvents type caused a 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
的子类,因为这对于我想要做的事情来说太过分了。 这里的运动部件的rest并不是那么重要; 我想要的是一种在以下设置中使用target:action:
pair 之后检查UIControlEvents
的方法:
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
如果有不同的方法来设置一个target:action:
发送回UIControlEvents
,我会接受的。 但我没有在文档中看到它。 或者,至少,在UIControl
object之外获得访问权限,这样我就可以获得我想要的类型。
你是对的; UIEvent.type
不能那样工作。 在内部, UIControl
子类基本上使用sendActionsForControlEvents:
方法,这意味着他们可以选择将任何他们想要的东西作为参数。
至于怎么知道,简单的回答就是每个控制事件都有一个单独的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.