UItouch事件被tableview拦截

最近做项目用到了手写签名的功能,手写签名的view是通过UItouch相关方法画线实现的,因为页面UI是列表形式,手写签名view 需要添加到tableview的footview上,这个时候就出现了问题,手写签名view的touch被tableview拦截了,这个时候再去操作view 签名的时候 是不能成功呢,而且页面会滚动。 下面我记录一下我的处理方式
1.一开始我以为像网上的方式,给tableview创建一个子类然后引入touch 方法:
refer https://blog.csdn.net/qq_42839789/article/details/81501832
但是view的touch 会覆盖tableviewtouch 并不能解决问题。
2.这个时候我想到hittest 方法通过事件响应机制,判断触摸的view是不是签名view 如果是让tableview暂时停止滚动,如果不是正常滚动。
具体实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import <UIKit/UIKit.h>

@interface WYTouchTableView : UITableView

@end

#import "WYTouchTableView.h"
#import "HJSignatureView.h"
@implementation WYTouchTableView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *viewReturn =[super hitTest:point withEvent:event];
//在touchView区域
if ([viewReturn isKindOfClass:[HJSignatureView class]]) {
self.scrollEnabled = NO;
return viewReturn;
}else{
self.scrollEnabled = YES;
}
//不在touchView区域,正常操作
return viewReturn;
}
@end