最近做项目, 遇到 UIScrollView 上添加 UISlider的问题.
- 第一点是 UIScrollView 的手势优先级大于 UISlider导致 Slider 滑动困难
- 第二点是 UISlider 的拖拽按钮较小, 命中率奇低.
像我这种这么注重体验的人是绝对不能忍的.
先说 UIScrollView 上添加 UISlider 问题
针对 UIScollView 的手势优先问题解决方式:
使用子类重写手势方法, 就行, 原因是 UIScrollView 在用户触摸时会有150ms 的一个判断如果用户没有做出其他手势时 才会让 Slider 成为响应者- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *view = [super hitTest:point withEvent:event]; if([view isKindOfClass:[UISlider class]]) { self.scrollEnabled = NO; } else { self.scrollEnabled = YES; } return view; }
UISlider 的拖拽较小 其实有很多解决方式. 但是网上很多都不管用, 所以自己写个笔记记录一下也帮助一下需要解决问题的小伙伴.
我使用的是 用一张宽高45 * 45 的图片 配合重写 UISlider 的方法的方式
这是向 UI 小姐姐要得拖拽的图片 宽高比 45 * 45static CGFloat sliderSize = 45; @implementation ArtPlayerSlider - (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:>(float)value { rect.origin.x = rect.origin.x - sliderSize / 2; rect.size.width = rect.size.width + sliderSize; return [super thumbRectForBounds:bounds trackRect:rect value:value]; } @end
网友评论