UISlider拖拽的按钮增加命中率问题

最近做项目, 遇到 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 的方法的方式

static 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

UISlider拖拽的按钮增加命中率问题_第1张图片
这是向 UI 小姐姐要得拖拽的图片 宽高比 45 * 45

你可能感兴趣的:(UISlider拖拽的按钮增加命中率问题)