美文网首页iOSIos@IONIC
tableView和scrollView滚动起冲突,点击事件冲突

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

作者: 哈么么茶 | 来源:发表于2016-06-26 16:58 被阅读3404次
    上下滚动冲突

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

    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;
    
      }
    

    相关文章

      网友评论

      • Jenny_e668:你好,我现在遇到一个问题请教一下,向上滑动tableview的时候没有反应,只有点击区域是header部分才可以往上滑,是什么原因?
        哈么么茶:不确定你的写法 功能不一样代码又有差别 github上很多可以参考
      • andy_xin:求 demo 自定义scrollView中加了那个方法后 我还是无实现,现在的问题是当手指放到tableView上进行向上滚的时候,tableView和那个header一起滚上去了。我想让tableView不滚。当header完全滚没了后,在让tableview滚,
        df7fa75b0524:嘿,哥们,这个问题你手势冲突解决了吗?
        哈么么茶:https://github.com/search?utf8=%E2%9C%93&q=%E5%8D%8A%E7%B3%96&type=

        这里看看吧 大概都是这个类型的 这篇是很久之前写的 一直 比较菜
      • 倒骑毛驴看风月:网上多,那为什么楼主花费了那么时间,我找了很久都没有找到满意的
        哈么么茶:@_Smile淰憶 其实上面已经说的很清楚了 自己把代码加进去就可以了 我的都是写在项目里 还有bug,拿出来也没意义
      • 倒骑毛驴看风月:求demo
        哈么么茶: @_Smile淰憶 网上很多,搜搜吧

      本文标题:tableView和scrollView滚动起冲突,点击事件冲突

      本文链接:https://www.haomeiwen.com/subject/litzdttx.html