An UIButton Category replace SEL with Block.
- block syntax
- Add
pod 'MSBlockButton'
to your Podfile. - Run
pod install
- Add all files under
MSBlockButton
to your project
- iOS 5.0 and greater
- ARC/MRC
#import "MSBlockButton.h"
CGFloat width = [UIScreen mainScreen].bounds.size.width;
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake((width-100)*0.5, (width-100)*0.5, 100, 100);
[self.view addSubview:button];
button.backgroundColor = [[UIColor orangeColor] colorWithAlphaComponent:0.8];
[button setTitle:@"Blocks" forState:UIControlStateNormal];
[button handleTouchUpInsideEventWithBlock:^(UIButton *sender) {
NSLog(@"%s",__func__);
}];
You can use MSBlockButton in Swift projects too. To do this, you must:
- Copy the relevant .m and .h files from the MSBlockButton 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 "MSBlockButton.h"
If you do the above, you can then write Swift code that uses MSBlockButton. 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.handleTouchUpInsideEvent { (btn:UIButton?) in
print("\("SwiftViewController") \(#function)")
}
MSBlockButton is available under the MIT license. See the LICENSE file for more info.