首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定哪种UIControlEvents类型导致了UIEvent?

如何确定哪种UIControlEvents类型导致了UIEvent?
EN

Stack Overflow用户
提问于 2011-05-25 22:05:17
回答 1查看 5.4K关注 0票数 14

我要做的是设置一组UIControl对象,通过同一个处理程序发送所有事件。该处理程序不需要根据触发的UIControlEvents类型确定适当的操作。

代码语言:javascript
复制
- (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:的方法:

代码语言:javascript
复制
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

如果有一种不同的方式来设置一个发送回target:action:UIControlEvents,我会接受这个方法。但我在文件里没有看到。或者,至少在UIControl对象之外获得访问,这样我就可以得到我想要的类型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-25 22:29:14

您是对的;UIEvent.type不是这样工作的。在内部,UIControl子类基本上使用sendActionsForControlEvents:方法,这意味着它们可以选择将任何它们想要的东西作为参数。

至于如何知道,简单的答案是对每个控制事件都有一个单独的方法。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6131549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档