实现uitableview 在一定范围内可以拖动 ,拖动到最顶部或最底部时可以内部滑动
首先我们定义一个HJGestureTable 继承自UITableView 并实现如下方法
// 允许处理多个手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
NSLog(@"%@,%@",gestureRecognizer.view,otherGestureRecognizer.view);
return YES;
}
第二步 解决拖动手势和滑动的冲突
#import "ViewController.h"
#import "HJGestureTable.h"
#define Nav_TopHeight ([UIScreen mainScreen].bounds.size.height >= 812.0 ? 35 : 20)
#define Kuan_Width [UIScreen mainScreen].bounds.size.width
#define Gao_HEIGHT [UIScreen mainScreen].bounds.size.height
#define BL_Kuan [UIScreen mainScreen].bounds.size.width/375
typedef enum{
Top = 0,
Bottom,
}TopOrBottom;//从顶部开始拖动还是从底部开始拖动
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
{
BOOL alsoPanGesture;
}
@property(nonatomic,assign)TopOrBottom topOrBottom;
@property(nonatomic,strong)HJGestureTable * trendsTableView;
@property(nonatomic,assign)float topOriginY;//trendsTableView可以拖动到的最顶部
@property(nonatomic,assign)float bottomOriginY;//trendsTableView可以拖动到的最底部
@end
@implementation ViewController
-(HJGestureTable *)trendsTableView
{
if (!_trendsTableView) {
_trendsTableView = [[HJGestureTable alloc] initWithFrame:CGRectMake(0, self.bottomOriginY, Kuan_Width, Gao_HEIGHT-self.topOriginY)];
_trendsTableView.delegate = self;
_trendsTableView.dataSource = self;
[self.view addSubview:_trendsTa