扩大UISlider滑块的触摸区域

#define thumbBound_x 10

#define thumbBound_y 20

@interface MGSlider:UISlider 

@property (nonatomic, assign) CGRect  lastBounds;

@end


@implementation MGSlider


//MARK:扩大滑块的触摸区域

- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rectvalue:(float)value {

    rect.origin.x= rect.origin.x;

    rect.size.width= rect.size.width;

    CGRectresult = [super thumbRectForBounds:bounds trackRect:rect value:value];

    lastBounds= result;

    return result;

}

- (UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event{

    UIView*result = [super hitTest:pointwithEvent:event];

    if(point.x<0|| point.x>self.bounds.size.width){

      returnresult;

    }

    if((point.y>= -thumbBound_y) && (point.y

            floatvalue =0.0;

            value = point.x-self.bounds.origin.x;

            value = value/self.bounds.size.width;

            value = value <0?0: value;

            value = value >1?1: value;

            value = value * (self.maximumValue-self.minimumValue) +self.minimumValue;

//            [self setValue:value animated:YES];

    }


    return result;

}

- (BOOL)pointInside:(CGPoint)pointwithEvent:(UIEvent*)event{

    BOOL result = [super pointInside:pointwithEvent:event];

    if(!result && point.y> -10) {

        if((point.x>=lastBounds.origin.x-thumbBound_x) && (point.x<= (lastBounds.origin.x+lastBounds.size.width+thumbBound_x)) && (point.y< (lastBounds.size.height+thumbBound_y))) {

            result =YES;

        }

    }

      return result;

}

@end

你可能感兴趣的:(扩大UISlider滑块的触摸区域)