=============
An UIButton Category replace SEL with Block.
- block syntax
- Add
pod 'UIButton+Blocks'to your Podfile. - Run
pod install
- Add all files under
UIButton+Blocks/UIButton+Blocksto your project
- iOS 5.0 and greater
- ARC/MRC
Code:
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake((MDScreenWidth-100)*0.5, (MDScreenHeight-100)*0.5, 100, 100);
[self.view addSubview:button];
button.backgroundColor = [[UIColor orangeColor] colorWithAlphaComponent:0.8];
[button setTitle:@"Blocks" forState:UIControlStateNormal];
//default UIControlEventTouchUpInside
[button handleClickWithClickBlick:^(UIButton *sender) {
NSLog(@"%s",__func__);
}];
/*
[button handleClickEvent:UIControlEventTouchUpInside withClickBlick:^(UIButton *sender) {
NSLog(@"%s",__func__);
}];
*/
You can use UIButton+Blocks in Swift projects too. To do this, you must:
- Copy the relevant .m and .h files from the UIButton+Blocks src folder into your project
- If prompted to create a "bridging header", you should do so. If not prompted and if you don't already have a bridging header, add one.
For more information on bridging headers, see Swift and Objective-C in the Same Project.
- In your bridging header, add a line that says:
#import "UIButton+Blocks.h"If you do the above, you can then write Swift code that uses UIButton+Blocks. For example, in Swift 3.0 :
let btn = UIButton(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 100, height: 100)))
btn.center = view.center
btn.backgroundColor = UIColor.purple
btn.setTitle("SwiftVC", for: UIControlState.normal)
view.addSubview(btn)
btn.handleClick { (btn:UIButton?) in
print("\("SwiftViewController") \(#function)")
}UIButton-Blocks was created by Jiang.Zijia in the development of MOMO.
UIButton+Blocks is available under the MIT license. See the LICENSE file for more info.