2015-08-24 67 views
0

我已經開始在iOS上使用這個很棒的SVGKit。我正在使用SVGKImageView的子類。現在在繼承SVGKImageView之前,我已經很容易地爲它添加了一個UITapGestureRecognizer。但我的要求讓我使用子類,因爲我必須將數十個SVGKImageView放到我的父視圖中。在SVGKit的SVGKImageView子類上檢測觸摸

這是因爲存在將是對其它視圖SVGKImageView透明部分,我想能夠忽略其中alpha = 0,所以我希望能夠檢測在單個SVGKImageView觸摸然後檢查視圖區域的觸摸爲阿爾法值,如果接觸是在透明區域子類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; 
} 

回答

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; 
} 
+0

我已經有和沒有'UITapGestureRecognizer'但無濟於事測試。 [tapGestureRecognizer setCancelsTouchesInView:NO];沒用的 – Umair

+0

手勢是否得到回調? – anhtu

+0

什麼都不會被調用。這是問題 – Umair