成都 网站建设,阳泉建设公司网站,网站建设图片如何放在网站上,门户网站建设需要多少钱场景#xff1a; #xff08;需求1#xff09;pageA一开始是【默认模式】#xff0c;点击父元素view#xff08;包括【搜索】文字#xff09;#xff0c;进入【搜索模式】#xff1b;
#xff08;需求2#xff09;在pageA中#xff0c;点击【取消】文字时#xff…场景 需求1pageA一开始是【默认模式】点击父元素view包括【搜索】文字进入【搜索模式】
需求2在pageA中点击【取消】文字时本身文字修改为【搜索】并且返回【默认模式】 解决方案 使用UIGestureRecognizerDelegate的gestureRecognizer:shouldReceiveTouch:实现效果 //pageA.m
interface PageA()UIGestureRecognizerDelegate
end
- (void)viewDidLoad {[super viewDidLoad];UIView* parentView [[UIView alloc] initWithFrame:CGRectMake(10,10,300,50)];[self.view addSubview:parentView];// 创建父元素的点击手势识别器UITapGestureRecognizer *gesture [[UITapGestureRecognizer alloc] initWithTarget:self action:selector(parentHandler:)];[parentView addGestureRecognizer:gesture];self.childLabel [[UILabel alloc] initWithFrame:CGRectMake(200,10,300,50)];[parentView addSubview:self.childLabel];childLabel.text 搜索;// 默认是默认模式// 创建子元素的点击手势识别器UITapGestureRecognizer *gesture2 [[UITapGestureRecognizer alloc] initWithTarget:self action:selector(childHandler:)];[self.childLabel addGestureRecognizer:gesture2];// 设置子元素手势识别器的代理对象gesture2.delegate self;
}// 父元素手势的处理方法
- (void)parentHandler:(UIGestureRecognizer *)gestureRecognizer {NSLog(parentHandlerd);// 进入搜索模式self.childLabel.text 取消;// 其他代码...
}// 子元素手势的处理方法
- (void)childHandler:(UIGestureRecognizer *)gestureRecognizer {NSLog(childHandler);// 返回默认模式self.childLabel.text 搜索;// 其他代码...
}
// 实现子元素手势识别器的代理方法
// 系统会调用这个方法来询问代理对象是否应该接收这个触摸事件
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {NSLog(child shouldReceiveTouch);UILabel* label (UILabel*)gestureRecognizer.view;if([label.text isEqualToString: 搜索]){// 子元素不接收该触摸事件父元素响应return NO; } else {// 子元素接收该触摸事件父元素不响应return YES;}
}
当点击parentView时进入搜索模式输出以下信息
parentHandlerd当点击【搜索】文字时进入搜索模式输出以下信息
child shouldReceiveTouch
parentHandlerd当点击【取消】文字时返回默认模式输出以下信息
child shouldReceiveTouch
childHandler