RDActionKit 0.1.3

RDActionKit 0.1.3

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

Vitali Kurlovich 维护。



  • Vitali Kurlovich

对 UIControl、UIButton、UITextField 等 UI 控件做了类别集合,用于使用行内块回调并将它们包装到对象回调中。

RDBlocks

示例

[self.segmentedControl setOnValueChanged:^(UISegmentedControl *  control) {
    NSLog(@"SelectedSegmentIndex: %@", @(control.selectedSegmentIndex));
}];

UIControl+RDBlock.h

- (void)setOnTouchDown:(void (^)(UIControl* control))onTouchDown;
- (void)setOnTouchDownRepeat:(void (^)(UIControl* control))onTouchDownRepeat;

- (void)setOnTouchDragInside:(void (^)(UIControl* control))onTouchDragInside;
- (void)setOnTouchDragOutside:(void (^)(UIControl* control))onTouchDragOutside;
- (void)setOnTouchDragEnter:(void (^)(UIControl* control))onTouchDragEnter;
- (void)setOnTouchDragExit:(void (^)(UIControl* control))onTouchDragExit;

- (void)setOnTouchUpInside:(void (^)(UIControl*  control))onTouchUpInside;
- (void)setOnTouchUpOutside:(void (^)(UIControl*  control))onTouchUpOutside;

UITextField+RDBlock.h

- (void)setOnEditingDidBegin:(void (^)(UITextField*  textField))onEditingDidBegin;
- (void)setOnEditingChanged:(void (^)(UITextField*  textField))onEditingChanged;
- (void)setOnEditingDidEnd:(void (^)(UITextField*  textField))onEditingDidEnd;
- (void)setOnEditingDidEndOnExit:(void (^)(UITextField*  textField))onEditingDidEndOnExit;

UISegmentedControl+RDBlock.h, (UISlider, UIStepper, UISwitch)

- (void)setOnValueChanged:(void (^)(<UISegmentedControl, UISlider, UIStepper, UISwitch>* control))onValueChanged;

UIBarButtonItem+RDBlock.h

- (instancetype)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style actionBlock:(void (^)(UIBarButtonItem* barButtonItem))actionBlock;

- (instancetype)initWithImage:(nullable UIImage *)image landscapeImagePhone:(UIImage*)landscapeImagePhone style:(UIBarButtonItemStyle)style actionBlock:(void (^)(UIBarButtonItem* barButtonItem))actionBlock;

- (instancetype)initWithTitle:(nullable NSString *)title style:(UIBarButtonItemStyle)style actionBlock:(void (^__nullable)(UIBarButtonItem * barButtonItem))actionBlock;

- (instancetype)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem actionBlock:(void (^__nullable)(UIBarButtonItem* barButtonItem))actionBlock;

- (void)setOnActionBlock:(void (^)( UIBarButtonItem* barButtonItem))onActionBlock;

RDActions

示例

RDActionItem* actionItem = [[RDActionItem alloc] initWithAction:[RDAction actionWithBlock:^{
        NSLog(@"OnAction");
    }] text:@"Action 1" image:[UIImage imageNamed:@"star"]];

RDActionItem* actionItem2 = [[RDActionItem alloc] initWithAction:[RDAction actionWithBlock:^{
        NSLog(@"OnAction 2");
    }] text:@"Action 2"];

    [self.segmentedControl setRDActionItem:actionItem forSegmentAtIndex:0];
    [self.segmentedControl setRDActionItem:actionItem2 forSegmentAtIndex:1];


UIAlertController* controller = [UIAlertController alertControllerWithTitle:@"Alert" message:@"Message" preferredStyle:UIAlertControllerStyleActionSheet];

       [controller addAction:[UIAlertAction actionWithRDActionItem:actionItem style:UIAlertActionStyleDefault]];
       [controller addAction:[UIAlertAction actionWithRDActionItem:actionItem2 style:UIAlertActionStyleDefault]];

       [self presentViewController:controller animated:YES completion:nil];

命令模式

@protocol RDActionProtocol <NSObject>
- (void)execute;
@end

@interface RDAction : NSObject<RDActionProtocol>
+ (instancetype)action;
+ (instancetype)actionWithBlock:(void (^)())actionBlock;
+ (instancetype)actionWithInvocation:(NSInvocation*)invacation;
@end

@interface RDActionItem : NSObject<RDActionProtocol>
@property (nonatomic, readonly) id<RDActionProtocol> action;

@property (nonatomic, copy, readonly) NSString* text;
@property (nonatomic, copy, readonly) NSString* detailText;
@property (nonatomic, readonly) UIImage* image;
@end

UIButton (UIBarButtonItem) +RDAction.h

UIButton (UIBarButtonItem) +RDActionItem.h

- (void)setRDAction:(id<RDActionProtocol>)action;
- (void)setRDActionItem:(RDActionItem*)actionItem;

UISegmentedControl+RDAction.h

UISegmentedControl+RDActionItem.h

- (void)setRDAction:(id<RDActionProtocol>)action forSegmentAtIndex:(NSUInteger)segment;
- (void)setRDActionItem:(RDActionItem*)actionItem forSegmentAtIndex:(NSUInteger)segment;

UIAlertAction+RDAction.h

UIAlertAction+RDActionItem.h

+ (instancetype)actionWithTitle:(NSString *)title style:(UIAlertActionStyle)style rdAction:(id<RDActionProtocol>)action;
+ (instancetype)actionWithRDActionItem:(RDActionItem*)actionItem style:(UIAlertActionStyle)style

使用方法

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install

要求

xCode 7

安装

RDActionKit 可以通过 CocoaPods 安装。要安装它,只需将以下行添加到 Podfile 中

pod "RDActionKit"

作者

Vitali Kurlovich, [email protected]

许可

RDActionKit 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。