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

上下滚动冲突

想实现以下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;

  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,757评论 1 9
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • 一.UITextField属性 0.enablesReturnKeyAutomatically 默认为No,如果设...
    奋斗ing0310阅读 1,689评论 0 2
  • 夜,深了,听着电台,耳边是主播舒缓的声音,缓缓倒出的话语勾起内心共鸣。 张爱玲曾说:“有一种失落,不能说,只能靠感...
    残殇_55a1阅读 230评论 0 2
  • 今天下午天气闷热,这或许是暴风雨来临的前奏。 我在学校的教学楼下打羽毛球,外面下起了倾盆大雨,雨来的那么急、那么凶...
    洪涛HT阅读 389评论 0 0