赞
踩
最近做一个功能,在一个scrollView里一些buttons,其中一个button要求响应touchDown事件。
但是当实际做的时候发现,当在button上快速滑动时,button是不会响应touchDown事件的!原来是因为scrollView优先处理pan手势,如果150ms内检测为pan手势,那么就不响应touchDown事件了;反之,会响应touchDown.
解决方法是:
_scrollView.delaysContentTouches = NO;
但是又出现了新的问题!因为只有一个button需要响应touchDown事件,其它按钮是不需要的。那么当在其它按钮上滑动时,scrollView页面不动了!!!!只有在空白的地方才能滑动页面!!很纠结!即便我重写button的touchBegin事件也不管用!!!
解决方法:重写scrollView
- - (BOOL)touchesShouldCancelInContentView:(UIView *)view {
- return YES;
- }
使用这个方法后touchDown和pan都会同时响应!
注意:
1.这个方法有个缺陷,如果在不需要touchDown按钮上滑动时,因为会响应touchDown,会导致按钮高亮!正常讲是不应该高亮的!不过这个小缺点还是能忍受的!
2.最好的方法是:delaysContentTouches不用改,然后重写scrollView的touchBegin方法,再写delegate通知指定按钮响应touchDown事件!就是复杂了一点~~~~Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。