UITableView以及ScrollView不能相迎TouchBegin处理

重写touchBegin 方法是不行的,在UITableView/UIScrollView
解决方案 重写hitTest:withEvent: 在他们的子类中


- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    static UIEvent *e = nil;

    if (e != nil && e == event) {
        e = nil;
        return [super hitTest:point withEvent:event];
    }

    e = event;

    if (event.type == UIEventTypeTouches) {
        NSSet *touches = [event touchesForView:self];
        UITouch *touch = [touches anyObject];
        if (touch.phase == UITouchPhaseBegan) {
            NSLog(@"Touches began");
        }else if(touch.phase == UITouchPhaseEnded){
            NSLog(@"Touches Ended");

        }else if(touch.phase == UITouchPhaseCancelled){
            NSLog(@"Touches Cancelled");

        }else if (touch.phase == UITouchPhaseMoved){
            NSLog(@"Touches Moved");

        }
    }
    return [super hitTest:point withEvent:event];
}

关于hitTest:withEvent:

字面意思是撞击测试,当手指触摸到当前屏幕上活跃的 app 界面。ios 系统会将 当前触摸操作 打包,具体就是UIEvent
屏幕上的每一次动作都是一个UITouch,多个UITouch 组成一次UIEvent. UIEvent 表示一次事件。
传递给当前活跃的App keyWindow.正常情况下 hitTest 确定屏幕上众多View 中哪一发生了事件。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event  

返回值 不为nil 则一值 查找view 的子view 重复调用hisTest 确定事件。

这边还有别人给的一些方法:
重写touch方法http://blog.csdn.net/aaidong/article/details/45914435
添加手势识别器:http://my.oschina.net/u/1861789/blog/346622

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值