最近做項(xiàng)目用到了手寫(xiě)簽名的功能,手寫(xiě)簽名的view是通過(guò)UItouch相關(guān)方法畫(huà)線實(shí)現(xiàn)的,因?yàn)轫?yè)面UI是列表形式,手寫(xiě)簽名view 需要添加到tableview的footview上,這個(gè)時(shí)候就出現(xiàn)了問(wèn)題,手寫(xiě)簽名view的touch被tableview攔截了,這個(gè)時(shí)候再去操作view 簽名的時(shí)候 是不能成功呢,而且頁(yè)面會(huì)滾動(dòng)。 下面我記錄一下我的處理方式
1.一開(kāi)始我以為像網(wǎng)上的方式,給tableview創(chuàng)建一個(gè)子類然后引入touch 方法:
refer https://blog.csdn.net/qq_42839789/article/details/81501832
但是view的touch 會(huì)覆蓋tableviewtouch 并不能解決問(wèn)題。
2.這個(gè)時(shí)候我想到hittest 方法通過(guò)事件響應(yīng)機(jī)制,判斷觸摸的view是不是簽名view 如果是讓tableview暫時(shí)停止?jié)L動(dòng),如果不是正常滾動(dòng)。
具體實(shí)現(xiàn)如下:
#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區(qū)域
if ([viewReturn isKindOfClass:[HJSignatureView class]]) {
self.scrollEnabled = NO;
return viewReturn;
}else{
self.scrollEnabled = YES;
}
//不在touchView區(qū)域,正常操作
return viewReturn;
}
@end