SHControlBlocks 1.2.1

SHControlBlocks 1.2.1

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最新发布2014年12月

Seivan Heidari 维护。



  • Seivan Heidari

此 pod 被 SHUIKitBlocks 使用,作为许多组件的一部分,用于补全 Foundation、UIKit、CoreLocation、GameKit、MapKit 和 iOS 应用程序架构其他方面的漏洞。

概览

当一个控件的控制一旦丢失,相关的块和事件会自动移除,因此没有必要清理 - Swizzle Free(™)

API

创建

删除

辅助工具和属性

用法

创建

删除

辅助工具和属性

安装

pod 'SHControlBlocks'

设置

将这些放在特定的文件中或项目前缀文件中

#import "UIControl+SHControlBlocks.h"

或者

#import "SHControlBlocks.h"

API

创建

#pragma mark -
#pragma mark Add block
-(void)SH_addControlEvents:(UIControlEvents)controlEvents
                 withBlock:(SHControlEventBlock)theBlock;

-(void)SH_addControlEventTouchUpInsideWithBlock:(SHControlEventBlock)theBlock;

删除

#pragma mark -
#pragma mark Remove block
-(void)SH_removeControlEventTouchUpInside;
-(void)SH_removeBlocksForControlEvents:(UIControlEvents)controlEvents;
-(void)SH_removeControlEventsForBlock:(SHControlEventBlock)theBlock;
-(void)SH_removeAllControlEventsBlocks;

辅助工具和属性

#pragma mark -
#pragma mark Helpers
-(NSSet *)SH_blocksForControlEvents:(UIControlEvents)theControlEvents;
-(NSSet *)SH_controlEventsForBlock:(SHControlEventBlock)theBlock;


#pragma mark -
#pragma mark Properties

#pragma mark -
#pragma mark Getters
@property(nonatomic,readonly) BOOL SH_isTouchUpInsideEnabled;

@property(nonatomic,readonly) NSDictionary * SH_controlBlocks;

使用方法

创建

使用 SHControlBlocks,您可以设置自动删除的块而不是使用选择器

  [self.btnFirst SH_addControlEvents:UIControlEventTouchDown withBlock:^(UIControl *sender) {
    [weakSelf performSegueWithIdentifier:@"second" sender:nil];
    NSLog(@"first");
  }];

或者如果您想要添加额外的块

  [btnSecond SH_addControlEvents:UIControlEventTouchUpInside withBlock:counterBlock];
  [btnSecond SH_addControlEvents:UIControlEventTouchDown withBlock:counterBlock];

适用于 touchUpInside 的便利选择器

  [button SH_addControlEventTouchUpInsideWithBlock:^(UIControl *sender) {
    [button removeFromSuperview]; //this will also remove the block :)
  }];

删除

删除特定块 - 如果是最后一个块,也会删除目标中的事件

  [btnSecond SH_removeControlEventsForBlock:counterBlock];

删除特定事件

  [btnSecond SH_removeBlocksForControlEvents:UIControlEventTouchUpInside];
  [btnSecond SH_removeControlEventTouchUpInside];

删除所有块和事件

  [button SH_removeAllControlEventsBlocks];

工具和属性


  [button SH_addControlEventTouchUpInsideWithBlock:blockOne];
  [button SH_addControlEventTouchUpInsideWithBlock:blockTwo];
  [button SH_addControlEventTouchUpInsideWithBlock:blockThree];

  NSSet * controlBlocks = button.SH_controlBlocks[@(UIControlEventTouchUpInside)];  
  NSAssert(button.SH_isTouchUpInsideEnabled,    @"Touch up inside should be enabled");
  NSAssert(button.SH_controlBlocks.count  == 1, @"There should be one event");
  NSAssert(controlBlocks.count            == 3, @"There should be three blocks");

联系方式

如果您在项目中使用了 SHControlBlocks,我很乐意了解相关信息。

邮箱:[email protected]
Twitter:@seivanheidari

许可证

SHControlBlocks 是 © 2013 Seivan,可在 MIT 许可证 下自由分发。查看 LICENSE.md 文件。