2009-07-19 41 views
0

我有這樣的一些嵌套的意見:爲什麼觸摸事件不會到達我的UIImageView?

首先,有一個大的UIView。在這裏面,有另一個UIView。在這裏面,有一個從UIView繼承的MyNiceButtons類。所以我有:

UIView> UIView> MyNiceButtons(=一個UIView)。

詳細地說,UIView創建一個UIImageView並將其作爲子視圖添加到自己,它代表一個圖形按鈕。所以MyNiceButtons類實現裏面,我有這樣的代碼,以假按鈕圖像處理上的觸摸事件:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; // i just need single touches 

    // just to see which view is affected 
    UIView *tview = [touch view]; 
    CGRect rect = tview.frame; 
    rect.origin.x = rect.origin.x + 20.0f; 
    tview.frame = rect; 
    [tview setBackgroundColor:[UIColor yellowColor]]; 

    if ([touch view] == self.fakeButtonImageView) { 
     NSLog(@"touch on fake button detected"); 
    } 
} 

層次中的所有觀點都userInteractionEnabled = YES。觸摸到達層次結構中的第一個視圖(父級的父級)。

UIView *tview = [touch view]; 

這隻會返回父級的父級,但不會返回用戶實際點擊的UIImageView。

識別觸摸是否在UIImageView按鈕上的技巧是什麼?

+0

是MyNiceButtons一個UIImageView子類,或者有一個UIImageView – 2009-07-19 22:47:52

+0

的UIView的「A」包含一個UIView的「B」,其中包含一個的UIImageView。 UIView「B」有觸摸檢測代碼,並詢問它是否發生在UIImageView上。 – Thanks 2009-07-20 08:43:31

回答

2

我首先建議您仔細看看可以使用自定義類型的UIButton(可以爲各種狀態設置圖像)。 95%的時間,這應該解決您的需求。

如果您有其他需要,我可以幫你調試瓦特/則hitTest等

相關問題