2012-06-07 38 views
0

我在UIImageView上檢測觸摸事件時遇到問題。我有子歸類的UIImageView和overrided canBecomeFirstResponder,touchedBegan和touchesEnded:在iOS 5中UIImageView上觸摸事件的問題

@implementation ImageViewNext 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     self.userInteractionEnabled = YES; 
    } 
    return self; 
} 

-(BOOL)canBecomeFirstResponder 
{ 
    return YES; 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"Touches Began event"); 
} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"Touches Ended"); 
} 

我要確保所有家長的意見有用戶交互啓用。

但我沒有得到我的活動?

我試圖在這裏找到解決方案,但沒有任何運氣。但在我的搜索中,我發現有些人使用「UIGestureRecognizer」來獲得相同的效果。因此,作爲一個側面問題,什麼是「正確的」解決方案使用覆蓋方法或使用UIGestureRecognizer?我不喜歡解決方案,一個正常的按鈕被給予一個圖像,所以請保持那些帖子:)

回答

1

您確定您的initWithFrame:被稱爲? UIViews有兩個指定的初始化程序,initWithFrame:initWithCoder,具體取決於它們的創建方式。

+0

你是對的initWithFrame:不叫!謝謝這是解決我的問題:) – DNRN

0

我不知道爲什麼你沒有得到觸摸事件,但要回答其他部分您使用UIGestureRecognizer的問題將大大簡化您的觸摸處理任何可用識別器的手勢。使用起來更簡單,而且你需要更少的代碼。此外,如果將來您需要在不同的觸摸事件之間進行協商(是拖動類型問題的一個抽頭),那麼所有這些邏輯都可以輕鬆處理。