MrH*_*Hen 10 events controls objective-c ios
我想要做的是设置一堆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];
}
}
Run Code Online (Sandbox Code Playgroud)
尽我所知,event.type这样做不起作用.我想避免使用子类,UIControl因为对于我想要做的事情来说,这是一种严重的过度杀伤.这里剩下的活动部件并不那么重要; 我想要的是在以下设置中使用UIControlEvents该target:action:对之后检查的方法:
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
Run Code Online (Sandbox Code Playgroud)
如果有一种不同的方式来设置target:action:发送回来的UIControlEvents,我会接受.但我没有在文档中看到它.或者,至少,访问对象外部,UIControl以便我可以获得我想要的类型.
Dav*_*ong 19
你是对的; UIEvent.type不这样做.在内部,UIControl子类基本上使用该sendActionsForControlEvents:方法,这意味着他们可以选择将他们想要的任何东西作为参数.
至于如何知道,简单的答案是为每个控制事件分别设置一个方法.
| 归档时间: |
|
| 查看次数: |
4710 次 |
| 最近记录: |