UIscrollView 不会取消 UI分段控件的内容触摸



我已经子类化了UIScrollView,并以以下方式重写了touchesShouldCancelInContentView:方法:

-(BOOL)touchesShouldCancelInContentView:(UIView *)view
{
    if ([view isKindOfClass:[UIButton class]] || [view isKindOfClass:[UISegmentedControl class]]) {
        return YES;
    }
    if ([view isKindOfClass:[UIControl class]]) {
        return NO;
    }
    return YES;
}

它完美地工作于UIButton,但它不工作于UISegmentedControl。如有任何帮助,不胜感激

终于想通了。必须子类化UISegmentedControl和UIScrollView

1.)为UISegmentedControl添加了一个新属性:

@property (nonatomic, assign) BOOL touchProcessed;

2.)重载了UISegmentedControl的以下方法:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (touchProcessed) {
        [super touchesBegan:touches withEvent:event];
    }
    else {
        [self.nextResponder touchesBegan:touches withEvent:event];
    }
    self.touchProcessed = NO;
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.nextResponder touchesMoved:touches withEvent:event];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.nextResponder touchesEnded:touches withEvent:event];
}

3.)重载了UIScrollview的以下方法:

-(BOOL)touchesShouldCancelInContentView:(UIView *)view
{ 
    if ([view isKindOfClass:[self class]])
    {
        return YES; //if there are two nested custom scrollviews  
    }
    if ([view isKindOfClass:[UIButton class]] || [view isKindOfClass:[CustomSegmentedControl class]] || [[view superview] isKindOfClass:[CustomSegmentedControl class]]) {
        return YES;
    }
    if ([view isKindOfClass:[UIControl class]]) {
        return NO;
    }
    return YES;
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (!self.dragging) {
        for (UIView *sv in self.subviews) {
            if ([sv isKindOfClass:[CustomSegmentedControl class]])
            {   //if there is more than one add a tag or tomething
                [(CustomSegmentedControl *)sv setTouchProcessed:YES];
                [sv touchesBegan:touches withEvent:event];
                return;
             }
        }
    }
}

作品完美!

最新更新