2011-11-13 46 views
2

以下是代碼,我使用經由-addSublayer到一個UIButton添加到層:如何使通過-addSublayer添加的UI元素:響應觸摸事件?

CAGradientLayer * tile = [[tile alloc] init];  

UIButton *XImageButton = [[UIButton alloc]init]; 
XImageButton.frame= CGRectMake(kXButtonlocX, kXButtonlocY, kXButtonHeight,kXButtonWidth); 

[XImageButton setTitle:@"xbutton" forState:UIControlStateNormal]; 
[XImageButton addTarget:nil action:@selector(XbuttonTouchEvent)  
forControlEvents:UIControlEventTouchUpInside]; 

[tile addSublayer:XImageButton.layer]; 

XImageButton沒有響應觸摸事件。我該如何解決這個問題,以便它能夠做出迴應?

回答

3

你不能。您必須將該按鈕添加爲子視圖。

UIKit觸摸事件轉發是UIResponder的一項功能,CALayers不會從UIResponder繼承,所以除非您喜歡從第一原則實現觸摸處理,否則這不是您的選擇。

要將漸變圖層轉換爲視圖,有兩種選擇:

1)創建一個新的UIView子類並覆蓋其+(Class)layerClass方法返回CAGradientLayer。

2)創建一個普通的UIView並添加CAGradientLayer作爲子圖層,然後添加按鈕作爲視圖的子視圖,而不是直接將其添加到CAGradientLayer。

相關問題