为了账号安全,请及时绑定邮箱和手机立即绑定

tableView和scrollView滚动起冲突,点击事件冲突

标签:
Android iOS
上下滚动冲突

想实现以下tableview+scrollview,scrollview是最底层。Segment和TableView是都是单独写好的,都可以左右滑动。最上面是一个header部分,内容不变的,回显示一些图片什么的。想做到tableview向上滑动的时候header部分页上移,以便给下面的显示提供更多空间。上移的时候navigationBar会显示,Segment会停留,类似TableView的HeaderView。

https://img1.sycdn.imooc.com//5d2dd23a0001469003780776.jpg

Paste_Image.png

为了实现这个真是搞了许久,今天突然发下原来是下面这个方法可以同时让scrollview接收两个事件,直接自定义一个scrollview放上这个方法就行了。参考http://blog.csdn.net/sanmaofly/article/details/12218591

  - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {return YES;

}

至于到时候区分tableView和scrollView,在代理方法中判断

  -(void)scrollViewDidScroll:(UIScrollView *)scrollView{  if ([scrollView isKindOfClass:[UITableView class]]){      //UITableView
      }   if ([scrollView isEqual:self.scrollView]) {     //scrollView
     }

  {

</br>

scrollview上设置点击事件和scrollview上的tableview的选中方法冲突

一般出现在有选择功能的页面, 页面本身肯定是scrollview的, 又想设置点击scrollview空白处收起选项卡或者键盘, 又想选项卡可以点击选择(选项卡tableview), 这时候scrollview的点击事件就会跟tableview的didselect方法冲突了, 造成didselect代理方法不执行而只执行scrollview的点击事件方法.

解决方法:

为scrollview的点击手势设置代理self

在文件中实现UIGestureRecognizerDelegate中的

  - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

代码如下:

  - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
  {  // 输出点击的view的类名
  // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
  if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"])             
  {        return NO;
  }  //截获Touch事件      
  return  YES;

  }

                       

作者:哈么么茶
链接:https://www.jianshu.com/p/9d2d76c0a5f3


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消