zoukankan      html  css  js  c++  java
  • UIControl类控件统一管理

    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];

    }

  • 相关阅读:
    设计模式-代理模式
    设计模式-桥接模式
    设计模式-组合模式
    设计模式-享元模式
    设计模式-适配器模式
    设计模式-装饰器模式
    设计模式-外观模式
    redis日志格式
    Linux下的文件切割和文件合并
    Windows server 服务器的端口突然远程连不上了,但是可以远程连接,怎么回事?
  • 原文地址:https://www.cnblogs.com/ranger-jlu/p/4021951.html
Copyright © 2011-2022 走看看