美文网首页iOS相关
UItouch事件被tableview拦截

UItouch事件被tableview拦截

作者: 不伟心 | 来源:发表于2019-03-05 16:57 被阅读0次

    最近做项目用到了手写签名的功能,手写签名的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暂时停止滚动,如果不是正常滚动。
    具体实现如下:

    #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
    

    相关文章

      网友评论

        本文标题:UItouch事件被tableview拦截

        本文链接:https://www.haomeiwen.com/subject/fieouqtx.html