Создайте свой супервизор в этом пользовательском классе и подключите розетку slider
к ползунку.Он должен делать то, что вам нужно, за исключением любого пользовательского отслеживания, которое вы можете иметь на самом слайдере.Это, вероятно, не очень хорошо работает с любыми распознавателями жестов в суперпредставлении (например, если суперпредставление является представлением с прокруткой, все ставки отключены).
Это также слепо игнорирует другие представления в суперпредставлении, которые могутотвечать на прикосновения.Если вы используете более детальный контроль, обновите hitTest:forEvent:
и верните MyView или ползунок только в случае необходимости.
@interface MyView : UIView
{
BOOL _tracking;
}
@property (nonatomic, strong) IBOutlet UISlider *slider;
@end
@implementation MyView
@synthesize slider;
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *superAnswer = [super hitTest:point withEvent:event];
if( [superAnswer isEqual:self.slider] ) {
return( superAnswer );
}
else {
return( self );
}
}
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *aTouch = [touches anyObject];
if( [self.slider pointInside:[aTouch locationInView:self.slider] withEvent:event] ) {
if( _tracking ) {
[self.slider continueTrackingWithTouch:aTouch withEvent:event];
}
else {
[self.slider beginTrackingWithTouch:aTouch withEvent:event];
_tracking = YES;
}
}
else {
if( _tracking ) {
[self.slider endTrackingWithTouch:aTouch withEvent:event];
_tracking = NO;
}
}
}
@end