UILabel没有触发触摸开始了



我目前正在努力进行接触开始工作。

我目前有这个设置

[UIView(UIViewController) -> UIScrollView -> UIView[holderView] -> UILabels[]]

我以这种方式以编程方式添加我的UILabels

//UIViewController method
UILabel *etiquetaCantidad = [[UILabel alloc] initWithFrame:CGRectMake(350, idx * 35, 50, 30)];
[etiquetaCantidad setTextAlignment:NSTextAlignmentCenter];
[etiquetaCantidad setBackgroundColor:[UIColor azulBase]];
[etiquetaCantidad setTextColor:[UIColor whiteColor]];
[etiquetaCantidad.layer setCornerRadius:5];
[etiquetaCantidad setText:@"0"];
[etiquetaCantidad setUserInteractionEnabled:YES];
[etiquetaCantidad setTag:idx + 100];
[holderView addSubview:etiquetaCantidad];

但是当我尝试时

// UIViewController 
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"Touch realizado: %@", touches);
}

它没有被触发,我在这里错过了什么???

好吧

,在与我的问题作斗争之后,问题是由我的UILabelUIViewController之间的UIScrollView引起的

所以我为UIScrollView实现了一个类别,将触摸传递给它的超级或nextResponder

#import "UIScrollView+TouchesBeganPropagable.h"
@implementation UIScrollView (TouchesBeganPropagable)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    if(!self.dragging){
        [self.nextResponder touchesBegan:touches withEvent:event];
    }else{
        [super touchesBegan:touches withEvent:event];
    }
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    if (!self.dragging){
        [self.nextResponder touchesMoved: touches withEvent:event];
    }
    else{
        [super touchesMoved: touches withEvent: event];
    }
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    if (!self.dragging){
        [self.nextResponder touchesEnded: touches withEvent:event];
    }
    else{
        [super touchesEnded: touches withEvent: event];
    }
}
@end

这样,我可以在我的UIViewController上使用touchesXXXX方法,无论UIScrollView是否在中间,它都可以与任何UIView交互

最新更新