让UIScrollView的子view响应触摸事件

有时候在UIScrollView中有某些子视图需要响应一些触摸事件,比如拖动、画板等

但是默认情况下,触摸事件会被UIScrollView捕获

实际上解决的方法很多,这里我先列出一种(自认为最简单的):

先设置UIScrollView的属性:

scrollView.canCancelContentTouches = YES;
scrollView.delaysContentTouches = NO;

对于要响应事件的子view,继承之,重写之:

#pragma mark -
#pragma mark 触摸事件
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	 //在这里设置scrollView的属性
         //globalScrollView.scrollEnabled = NO;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
	//处理啥啥
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
	//在这里设置scrollView的属性
         //globalScrollView.scrollEnabled = YES;
}

至此,我们已经搞定之 – -

更有定制性的用法:

我们甚至可以这么干:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    If(xxxxx) {
	globalScrollView.scrollEnabled = YES;
   }
}

在touchesMoved里面做一些判定后再决定是否禁止uiscrollView滚动。

这样做的问题:

至少在我的项目里,这样做没有带来任何问题,不论是触摸后立即拖动,还是触摸后保持一段时间再拖动,都没有问题。

唯一让我觉得不确定的是:我们是否应该尽早地进行globalScrollView.scrollEnabled=YES,不过可能性很小 – -

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值