0

我已经开始SVGKit在 iOS 上使用它。我正在使用SVGKImageView. 现在,在子类化之前,SVGKImageView我可以很容易地添加一个UITapGestureRecognizer。但是我的要求使我必须使用子类,因为我必须SVGKImageView在我的父视图上放置数十个。

这是因为在其他视图上会有SVGKImageView透明部分,我希望能够忽略 alpha = 0 的视图区域上的触摸,所以我希望能够检测单个触摸SVGKImageView然后检查 alpha 值以及是否触摸在透明区域将触摸事件转发到下一个视图,依此类推,直到找到某个视图的非透明区域

现在在子类化之后SVGKImageView添加UITapGestureRecognizer不起作用,这也是

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

在我的子类中没有调用。我也将 SVGKImageView 设置userInteractionEnabled为 YES 但无济于事。

谁能帮助告诉我为什么没有将触摸/点击事件传递给我的 SVGKImageView子类?

下面是我的子类init方法

- (instancetype)init{

    self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(svgImageTapped:)];
    self.tapGestureRecognizer.numberOfTapsRequired = 1;
    self.tapGestureRecognizer.delegate = self;
    [self addGestureRecognizer:self.tapGestureRecognizer];

    self.imageSVG = [SVGKImage imageNamed:@"SomeFile.svg"];
    self = (Subclass*)[[SVGKLayeredImageView alloc] initWithSVGKImage:self.imageSVG];
    [self sizeToFit];
    self.userInteractionEnabled = YES;

    self = [super init];

    return self;
}
4

1 回答 1

0

订购您的代码:

- (instancetype)init{
        self = [super init]; // <--- should go first

        self = (Subclass*)[[SVGKLayeredImageView alloc] initWithSVGKImage:[SVGKImage imageNamed:@"SomeFile.svg"]];

        // self.imageSVG = [SVGKImage imageNamed:@"SomeFile.svg"];
        [self sizeToFit];
        self.userInteractionEnabled = YES;

        return self;
}
于 2015-08-24T09:00:47.210 回答