博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
屏蔽响应事件继续向父视图传递的category
阅读量:6090 次
发布时间:2019-06-20

本文共 3089 字,大约阅读时间需要 10 分钟。

屏蔽响应事件继续向父视图传递的category

这篇教程是上一篇教程的升级版,将复杂的代码封装成了category,更便于使用:)

效果:

源码:

UIGestureRecognizer+EnvetInCurrentView.h 与 UIGestureRecognizer+EnvetInCurrentView.m

////  UIGestureRecognizer+EnvetInCurrentView.h//  BackgroundView////  Created by YouXianMing on 14-10-3.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import 
typedef void (^CurrentViewBlock)(UIGestureRecognizer *gesture);typedef void (^OtherViewBlock)(UIGestureRecognizer *gesture);@interface UIGestureRecognizer (EnvetInCurrentView)- (void)eventInCurrentView:(CurrentViewBlock)currentViewBlock inOtherView:(OtherViewBlock)otherViewBlock;@end
////  UIGestureRecognizer+EnvetInCurrentView.m//  BackgroundView////  Created by YouXianMing on 14-10-3.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "UIGestureRecognizer+EnvetInCurrentView.h"@implementation UIGestureRecognizer (EnvetInCurrentView)- (void)eventInCurrentView:(CurrentViewBlock)currentViewBlock               inOtherView:(OtherViewBlock)otherViewBlock{    UIEvent *event = [[UIEvent alloc] init];    CGPoint location = [self locationInView:self.view];        //check actually view you hit via hitTest    UIView *view = [self.view hitTest:location withEvent:event];        if ([view.gestureRecognizers containsObject:self]) {        currentViewBlock(self);    } else {        otherViewBlock(self);    }}@end

使用时候的源码:

////  ViewController.m//  BackgroundView////  Created by YouXianMing on 14-10-3.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "UIView+BackgroundView.h"#import "UIGestureRecognizer+EnvetInCurrentView.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // 添加手势    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self                                                                          action:@selector(handleSingleTap:)];    [self.view addGestureRecognizer:tap];        UILabel *label      = [[UILabel alloc] initWithFrame:self.view.bounds];    label.text          = @"Y.X. Touch Test";    label.textAlignment = NSTextAlignmentCenter;    label.font          = [UIFont fontWithName:@"HelveticaNeue-Thin" size:40.f];    label.textColor     = [UIColor redColor];    [self.view addSubview:label];}- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer{    [gestureRecognizer eventInCurrentView:^(UIGestureRecognizer *gesture) {        NSLog(@"当前视图事件");        // 显示        [self.view showBackgroundViewAndConfig:^(BackgroundView *configView) {            configView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];            configView.startDuration = 0.4f;            configView.endDuration   = 0.4f;        }];                // 延迟3s执行        [self performSelector:@selector(affterDelay)                   withObject:nil                   afterDelay:3.f];    } inOtherView:^(UIGestureRecognizer *gesture) {        NSLog(@"其他视图的事件");    }];}- (void)affterDelay{    // 隐藏    [self.view removeBackgroundView];}@end

以下是需要注意的地方:

 

转载地址:http://nbmwa.baihongyu.com/

你可能感兴趣的文章
CSS3 transforms 3D翻开
查看>>
java基础---->正则表达式
查看>>
2.2013/06/13_log(n)+1
查看>>
关于加载iframe时进度条不消失的问题
查看>>
oracle ORA-01840:输入值对于日期格式不够长
查看>>
python基础知识~logger模块
查看>>
SIP入门(二):建立SIPserver
查看>>
Servlet3.0的异步
查看>>
WebService连接postgresql( 失败尝试)
查看>>
从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?...
查看>>
从MFQ方法到需求分析
查看>>
android.view.WindowManager$BadTokenException: Unable to add window
查看>>
HDU5012:Dice(bfs模板)
查看>>
iphone openssh
查看>>
Linux下MEncoder的编译
查看>>
spark高级排序彻底解秘
查看>>
ylbtech-LanguageSamples-PartialTypes(部分类型)
查看>>
福建省促进大数据发展:变分散式管理为统筹集中式管理
查看>>
开发环境、生产环境、测试环境的基本理解和区别
查看>>
tomcat多应用之间如何共享jar
查看>>