2010-03-03 181 views
1

我有一個UIImageView的子類,我需要知道什麼時候被觸摸。 (下面的完整代碼)我已經找到並閱讀thisthis。他們很有用,但都沒有工作。不僅我的touchesBegan:withEvent:方法不被調用,圖像後面的按鈕被按下。UIImageView子類觸摸檢測

這裏是我的代碼:

頭文件

@interface MathKeyboardKey : UIImageView 
{ 

} 

@end 

實現文件:

@implementation MathKeyboardKey 

- (id)initWithImage:(UIImage *)image 
{ 
    if (self = [super initWithImage:image]) 
    { 
     //init here 
    } 
    return self; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"-- I AM TOUCHED --"); 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
} 

@end 

調用代碼:

{ 
    self.userInteractionEnabled = NO; 

    mathKeyboardAccess = [[MathKeyboardKey alloc] initWithImage:[UIImage imageNamed:@"mathKey.png"]]; 
    CGRect frm = mathKeyboardAccess.frame; 
    frm.origin = CGPointMake(80, 171); 
    mathKeyboardAccess.frame = frm; 
    mathKeyboardAccess.userInteractionEnabled = YES; 
    [self addSubview:mathKeyboardAccess]; 
} 

這一觀點被添加爲另一個子視圖(th e MathKeyboard)。超級視圖不能啓用用戶交互,因爲它覆蓋了另一個視圖(系統鍵盤)。當我嘗試將MathKeyboardKey添加到系統鍵盤視圖時,它不顯示。如果我嘗試使用UIButton,它永遠不會顯示出來,無論我將它放在哪個視圖中。

如果不明顯,問題是:如何在此UIImageView子類中檢測觸摸?

+0

我在黑暗中射擊,你有沒有嘗試將它設置爲第一響應者? – willcodejavaforfood 2010-03-03 08:50:11

回答

1
self.userInteractionEnabled = NO; 

由於您已禁用父視圖的用戶交互,孩子如何接收任何交互?刪除這一行。

+0

我注意到該行和我的按鈕有效,但我無法在系統鍵盤中使用任何內容。如何通過「MathKeyboard」向系統鍵盤發送觸摸? – CajunLuke 2010-03-03 17:12:50

+0

@Cajun:發送消息到系統鍵盤是「無證」。如果目標是文本字段或文本視圖,請直接修改其「text」屬性。 – kennytm 2010-03-03 17:22:26

+0

不僅沒有記錄,它直線運行也不起作用。我不得不直接將我的視圖添加爲鍵盤的子視圖。 所以答案並不直接回答這個問題,但它讓我走上了正確的道路。 – CajunLuke 2010-03-03 18:06:21