UIScrollView中添加UIScrollView作为子视图
2015-02-12 10:47
155 查看
在开发项目时,遇到了一个问题:
我的UIScrollViewOut中嵌入了一个UIScrollViewIn,
当我想要拖动UIScrollViewIn时,UIScrollViewOut却动了,而UIScrollViewIn没有动。但是只要按住UIScrollViewIn一会再拖动,UIScrollViewIn就可以滑动。
网上查阅UIScrollView的原理:
UIScrollView重载了hitTest方法,当手指touch的时候,UIScrollView会拦截所有event,然后等待150ms,在这段时间内,如果没有手指没有移动,当时间结束时,UIScrollView会发送tracking event到子视图上,并且自身不滑动。在时间结束前,手指发生了移动,那么UIScrollView就会进行滑动,从而取消发送tracking。
看来是UIScrollViewOut的问题。直接拖动UIScrollViewIn,此时touch时间在150ms以内,UIScrollViewOut会认为是拖动自己,从而拦截了event,导致UIScrollViewIn接受不到滑动的event。但是只要按住UIScrollViewIn一会再拖动,此时此时touch时间超过150ms,因此滑动的event会发送到UIScrollViewIn上。
期间试过几种方法,只有一种可行,就是重写UIScrollViewOut的hitTest方法:当滑动UIScrollViewIn时,使UIScrollViewOut不可滑动。代码如下:
我的UIScrollViewOut中嵌入了一个UIScrollViewIn,
当我想要拖动UIScrollViewIn时,UIScrollViewOut却动了,而UIScrollViewIn没有动。但是只要按住UIScrollViewIn一会再拖动,UIScrollViewIn就可以滑动。
网上查阅UIScrollView的原理:
UIScrollView重载了hitTest方法,当手指touch的时候,UIScrollView会拦截所有event,然后等待150ms,在这段时间内,如果没有手指没有移动,当时间结束时,UIScrollView会发送tracking event到子视图上,并且自身不滑动。在时间结束前,手指发生了移动,那么UIScrollView就会进行滑动,从而取消发送tracking。
看来是UIScrollViewOut的问题。直接拖动UIScrollViewIn,此时touch时间在150ms以内,UIScrollViewOut会认为是拖动自己,从而拦截了event,导致UIScrollViewIn接受不到滑动的event。但是只要按住UIScrollViewIn一会再拖动,此时此时touch时间超过150ms,因此滑动的event会发送到UIScrollViewIn上。
期间试过几种方法,只有一种可行,就是重写UIScrollViewOut的hitTest方法:当滑动UIScrollViewIn时,使UIScrollViewOut不可滑动。代码如下:
- (BOOL)isInScrollView:(UIView *)resultView { UIView *view = resultView; BOOL success = NO; while (![view isKindOfClass:[self class]]) { if ([view isKindOfClass:[RLTouchScrollViewIn class]]) { success = YES; break; } else { view = view.superview; } } return success; } - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView* result = [super hitTest:point withEvent:event]; if ([self isInScrollView:result]) { self.scrollEnabled = NO; } else { self.scrollEnabled = YES; } return result; }
相关文章推荐
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- 在storyboard/xib中如何往UIScrollView里的子视图添加约束?
- 添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)
- 在滚动视图上添加子视图(UIScrollView)
- UIScrollVIew上添加滚动视图
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- UIView中添加子视图UISCrollview后UITouch事件不响应
- 关于UIScrollview添加子视图按钮无反应
- 【Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)! 推荐
- 添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)
- Xib文件 Cell中添加滚动视图 UIScrollView
- iOS开发经验--UIScrollview 添加到控制器里向下偏移 storyboard中创建的 子视图 中 添加的子视图 会遮挡父类之间的视图
- UIScrollView中添加一个视图,实现让其始终固定在某个位置
- 添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)
- 添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!
- iOS 6编程-UIScrollView滚动视图和UIPageControl分页控件实现图像分页显示
- UIScrollView的作用原理,实现scrollView中touch事件作用子视图
- UIScrollView 滚动视图—IOS开发
- UIScrollView的作用原理,实现scrollView中touch事件作用子视图
- UIScrollView 滚动视图 (实例)