ScrollView包含TableView解除聯動

  • Question:
    當tableView被 父控件(scrollView或其子類) 所包含時,當tableView滑動到頂部時,再次下拉滑動tableView時,scrollView會其聯動

  • Answer:
    需要繼承自定義tableView,通過響應者鏈,獲取父控件(scrollView或其子類)對象,修改其scrollEnabled屬性,解除聯動
1.代碼實現 git clone
  • 1.1 CustomTableView.h 文件實現
//
//  CustomTableView.h
//
//  Created by iwevon on 16/6/22.
//  Copyright ? 2016年 iwevon. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface CustomTableView : UITableView
@end
  • 1.2 CustomTableView.m 文件實現
//
//  CustomTableView.m
//
//  Created by iwevon on 16/6/22.
//  Copyright ? 2016年 iwevon. All rights reserved.
//
#import "CustomTableView.h"
@implementation CustomTableView
/**************************************************
   question:
       當tableView被 父控件(scrollView或其子類) 所包含時,當tableView滑動到頂部時,
再次下拉滑動tableView時,scrollView會其聯動
--------------------------------------------------
   answer:
       通過響應者鏈,獲取父控件(scrollView或其子類)對象,修改其'scrollEnabled'屬性,解除聯動
*/
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
   UIView *view = [super hitTest:point withEvent:event];
   //使用響應者鏈解決
   UIResponder *responder = [self nextResponder];
   UIScrollView *scrollView = nil;
   //responder==nil:說明tableView未被scrollView包含 scrollView!=nil:說明按照條件獲取到父控件(scrollView或其子類)對象
   while (responder && scrollView == nil)
   {
       //如果是父控件(scrollView或其子類)就返回,說明tableview被scrollView包含關系
       if ([responder isKindOfClass:[UIScrollView class]]) {
           scrollView = (UIScrollView *)responder;
       } else {
           //根據響應者鏈去獲取下一個響應者對象
           responder = [responder nextResponder];
       }
   }
   //scrollView為空時不會發送消息
   if (view) { //當view!=nil時,(view類型為UITableViewCellContentView)需要關閉響應者鏈中scrollView滑動手勢
       scrollView.scrollEnabled = NO;
   } else { //當view==nil時,說明手勢操作不是tableView發出的
       scrollView.scrollEnabled = YES;
   }
   return view;
}
@end
2. 運行效果
運行效果
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • *7月8日上午 N:Block :跟一個函數塊差不多,會對里面所有的內容的引用計數+1,想要解決就用__block...
    炙冰閱讀 2,515評論 1 14
  • 廢話不多說,直接上干貨 ---------------------------------------------...
    小小趙紙農閱讀 3,410評論 0 15
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • 大概什么時候開始對話已經追溯不回去了,不過第一次示人還是有模糊的記憶。 花一堂數學課的時間用他和他寫了兩頁篇幅的對...
    留候閱讀 277評論 0 0
  • 前言 StreamingPro在內部已經用在比較復雜的項目上了。所以導致配置文件巨復雜,之前同事提到這事,然后我自...
    祝威廉閱讀 2,411評論 1 4