iOS开发中解决UITableView嵌套ScrollView(UICollectionView)的手势冲突

iOS开发中解决UITableView嵌套ScrollView(UICollectionView)的手势冲突,第1张

之前写过类似的( https://www.jianshu.com/p/b867ed4ee9e3 ),这里就当温故而知新吧!

一个tableView上的某个cell(后面用cellA代替)上有一个scrollView,该scrollView上添加了几个tableView。要求在cellA所在的section的sectionHeader滑动到顶部的时候cellA上的scrollView上的几个tableView可以滑动,否则不能滑动。

1.需要底部的tableView能够同时响应多个手势(这样在滑动子tableView时候,底部的tableView也能滑动)

2.在最开始的时候底部tableView能够滑动,scrollView上的tableView不能滑动。

3.当cellA所在的section的sectionHeader滑动到顶部的时候,scrollView上的几个tableView可以滑动。

4.当scrollView上的tableView在Y方向的偏移量为0的时候,scrollView上tableView不能滑动,底部的tableView能滑动。

1.监听底部tableView的偏移量,从而设置该tableView以及scrollView上几个tableView是否能滑动

2.设置scrollView上几个tableView是否能滑动

3.监听scrollView上几个tableView的偏移量,从而通知底部tableView是否可滑动

4.接收通知,从而设置底部tableView以及scrollView上几个tableView是否能滑动

https://github.com/yangguanghei/table-scroll

这里我们为tableview添加长按手势

UILongPressGestureRecognizer *longPressGr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)]

longPressGr.minimumPressDuration = 0.5f

longPressGr.numberOfTouchesRequired = 1

[_tableView addGestureRecognizer:longPressGr]

[longPressGr release]

这时我们会发现每次按住tableView并且松开的时候, longPressAction: 这个方法会执行2次

- (void)longPressAction:(UILongPressGestureRecognizer *)longPress

{

if (longPress.state == UIGestureRecognizerStateBegan) {

CGPoint point = [longPress locationInView:_tableView]

NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:point]// 可以获取我们在哪个cell上长按

if (indexPath != nil) {

NSLog(@"%ld", indexPath.row)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11444771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存