码迷,mamicode.com
首页 > 其他好文 > 详细

UIControl类控件统一管理

时间:2014-10-13 14:34:19      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:des   io   ar   for   sp   on   cti   amp   ad   

static char OperationKey;

 

+(NSString *)eventName:(UIControlEvents)event

{

    switch (event) {

        case UIControlEventTouchDown:          return @"UIControlEventTouchDown";

        case UIControlEventTouchDownRepeat:    return @"UIControlEventTouchDownRepeat";

        case UIControlEventTouchDragInside:    return @"UIControlEventTouchDragInside";

        case UIControlEventTouchDragOutside:   return @"UIControlEventTouchDragOutside";

        case UIControlEventTouchDragEnter:     return @"UIControlEventTouchDragEnter";

        case UIControlEventTouchDragExit:      return @"UIControlEventTouchDragExit";

        case UIControlEventTouchUpInside:      return @"UIControlEventTouchUpInside";

        case UIControlEventTouchUpOutside:     return @"UIControlEventTouchUpOutside";

        case UIControlEventTouchCancel:        return @"UIControlEventTouchCancel";

        case UIControlEventValueChanged:       return @"UIControlEventValueChanged";

        case UIControlEventEditingDidBegin:    return @"UIControlEventEditingDidBegin";

        case UIControlEventEditingChanged:     return @"UIControlEventEditingChanged";

        case UIControlEventEditingDidEnd:      return @"UIControlEventEditingDidEnd";

        case UIControlEventEditingDidEndOnExit:return @"UIControlEventEditingDidEndOnExit";

        case UIControlEventAllTouchEvents:     return @"UIControlEventAllTouchEvents";

        case UIControlEventAllEditingEvents:   return @"UIControlEventAllEditingEvents";

        case UIControlEventApplicationReserved:return @"UIControlEventApplicationReserved";

        case UIControlEventSystemReserved:     return @"UIControlEventSystemReserved";

        case UIControlEventAllEvents:          return @"UIControlEventAllEvents";

        default:

            return @"description";

    }

    return @"description";

}

 

- (void)handleControlEvent:(UIControlEvents)event withBlock:(void(^)(id sender))block {

    

    NSString *methodName = [UIControl eventName:event];

    

    NSMutableDictionary *opreations = (NSMutableDictionary*)objc_getAssociatedObject(self, &OperationKey);

    

    if(opreations == nil)

    {

        opreations = [[NSMutableDictionary alloc] init];

        objc_setAssociatedObject(self, &OperationKey, opreations, OBJC_ASSOCIATION_RETAIN);

    }

    [opreations setObject:block forKey:methodName];

    

    [self addTarget:self action:NSSelectorFromString(methodName) forControlEvents:event];

    

}

 

- (void)removeHandlerForEvent:(UIControlEvents)event

{

    

    NSString *methodName = [UIControl eventName:event];

    NSMutableDictionary *opreations = (NSMutableDictionary*)objc_getAssociatedObject(self, &OperationKey);

    

    if(opreations == nil)

    {

        opreations = [[NSMutableDictionary alloc] init];

        objc_setAssociatedObject(self, &OperationKey, opreations, OBJC_ASSOCIATION_RETAIN);

    }

    [opreations removeObjectForKey:methodName];

    [self removeTarget:self action:NSSelectorFromString(methodName) forControlEvents:event];

}

UIControl类控件统一管理

标签:des   io   ar   for   sp   on   cti   amp   ad   

原文地址:http://www.cnblogs.com/ranger-jlu/p/4021951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!