携手发明,一起生长!这是我参加「日新计划 8 月更文挑战」的第30天,点击检查活动概况
前语
原理:运用cancelsTouchesInView特色,控制点击工作优先级
I 设置tableView的点击工作优先级低于cell的选中工作
1.1 运用场景
场景1:比如选择视图,监听蒙版的点击工作就躲藏选择视图。优先处理选择视图的cell选中工作。
场景2:产品列表的产品点击工作,设置低于右侧的操作按钮的点击工作
1.2 运用cancelsTouchesInView特色进行完结
案例1:tableView的UITapGestureRecognizer的优先级低于cell的选中工作
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
[[tap rac_gestureSignal] subscribeNext:^(id x) {
@strongify(self);
if (self.alpha) {
[self.viewModel.hiddenSubject sendNext:nil];
}
}];
[self addGestureRecognizer:tap];
UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer alloc] init];
cutTap.cancelsTouchesInView = NO;// 设置tableView的点击工作优先级,低于cell的选中工作
[[cutTap rac_gestureSignal] subscribeNext:^(id x) {
// @strongify(self);
[self.viewModel.hiddenSubject sendNext:nil];
}];
[self.tableView addGestureRecognizer:cutTap];
案例2:cell的选中工作低于按钮的点击工作
self.contentView.backgroundColor = kViewColor;
UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer alloc] init];
cutTap.cancelsTouchesInView = NO;// 设置V的点击工作优先级,低于cell的选中工作
[[cutTap rac_gestureSignal] subscribeNext:^(id x) {
NSLog(@" cutTap 点击了cell ");
if ( self.models.block) {
self.models.block(self.models);
}
}];
[self.contentView addGestureRecognizer:cutTap];
按钮的点击工作举荐也用addGestureRecognizer:
完结。
1.3 其他办法控制工作的传递
UIview的 hitTest: withEvent:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
if (point.y<0) {
return [super hitTest:point withEvent:event];
}
return self;
}
- 交给子视图处理工作
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
CGPoint redBtnPoint = [self convertPoint:point toView:self.contentView];
if ( CGRectContainsPoint(_imgViewdel.frame, redBtnPoint) ) {
return _imgViewdel;
}
// _imgView
return [super hitTest:point withEvent:event];
}
- gestureRecognizer代理办法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if ([touch.view isKindOfClass:[UITextField class]])
{
return NO;
}
// 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch工作
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
II、see aslo
iOS Horizontal Popup View 【 水平方向弹出菜单视图】比如:产品列表支撑弹出菜单进行下/上架产品、打印产品价签、修改产品信息、同步网店
等操作popover
视频:live.csdn.net/v/173757
demo1下载地址:download.csdn.net/download/u0…
demo 设置两个检验开关 :
检验开关1:将水平方向弹出菜单视图集成到cell
检验开关2:将水平方向弹出菜单视图集成到VC的View
demo2下载地址:download.csdn.net/download/u0…
demo2的内容是:将水平方向弹出菜单视图集成到VC的View
疑问解答,请关注群众号:iOS逆向
1.支撑打开折叠的弹出菜单的完结思路:
1.1将弹出视图添加到keyWindow,蒙版也添加到主窗口(主要原因是点击屏幕的空白处,需求躲藏弹出视图)
1.2展示的时分,动画从右上角往左下脚延伸;躲藏的时分,动画从左下脚往右上角收回 (展示的时分,从上往下,即x,y 渐渐变大)
1.3 内部视图选用collectionView进行布局
1.4 view的frame 是依据当时点击的菜单按钮地点的产品cell进行核算和坐标转换的。
———————————————— 版权声明:本文为CSDN博主「#群众号:iOS逆向」的原创文章,遵从CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:blog.csdn.net/z929118967/…