57 lines
1.5 KiB
Mathematica
57 lines
1.5 KiB
Mathematica
|
|
//
|
||
|
|
// UIView+BlocksKit.m
|
||
|
|
// BlocksKit
|
||
|
|
//
|
||
|
|
|
||
|
|
#import "UIView+BlocksKit.h"
|
||
|
|
#import "UIGestureRecognizer+BlocksKit.h"
|
||
|
|
|
||
|
|
@implementation UIView (BlocksKit)
|
||
|
|
|
||
|
|
- (void)bk_whenTouches:(NSUInteger)numberOfTouches tapped:(NSUInteger)numberOfTaps handler:(void (^)(UIGestureRecognizer *sender))block
|
||
|
|
{
|
||
|
|
if (!block) return;
|
||
|
|
|
||
|
|
UITapGestureRecognizer *gesture = [UITapGestureRecognizer bk_recognizerWithHandler:^(UIGestureRecognizer *sender, UIGestureRecognizerState state, CGPoint location) {
|
||
|
|
block(sender);
|
||
|
|
}];
|
||
|
|
|
||
|
|
gesture.numberOfTouchesRequired = numberOfTouches;
|
||
|
|
gesture.numberOfTapsRequired = numberOfTaps;
|
||
|
|
|
||
|
|
[self.gestureRecognizers enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
|
||
|
|
if (![obj isKindOfClass:[UITapGestureRecognizer class]]) return;
|
||
|
|
|
||
|
|
UITapGestureRecognizer *tap = obj;
|
||
|
|
BOOL rightTouches = (tap.numberOfTouchesRequired == numberOfTouches);
|
||
|
|
BOOL rightTaps = (tap.numberOfTapsRequired == numberOfTaps);
|
||
|
|
if (rightTouches && rightTaps) {
|
||
|
|
[gesture requireGestureRecognizerToFail:tap];
|
||
|
|
}
|
||
|
|
}];
|
||
|
|
|
||
|
|
self.userInteractionEnabled = YES;
|
||
|
|
[self addGestureRecognizer:gesture];
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)bk_whenTapped:(void (^)(UIGestureRecognizer *sender))block
|
||
|
|
{
|
||
|
|
[self bk_whenTouches:1 tapped:1 handler:block];
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)bk_whenDoubleTapped:(void (^)(UIGestureRecognizer *sender))block
|
||
|
|
{
|
||
|
|
[self bk_whenTouches:1 tapped:2 handler:block];
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)bk_eachSubview:(void (^)(UIView *subview))block
|
||
|
|
{
|
||
|
|
NSParameterAssert(block != nil);
|
||
|
|
|
||
|
|
[self.subviews enumerateObjectsUsingBlock:^(UIView *subview, NSUInteger idx, BOOL *stop) {
|
||
|
|
block(subview);
|
||
|
|
}];
|
||
|
|
}
|
||
|
|
|
||
|
|
@end
|