2011-10-18 49 views
2

我正在使用NSTimer構建旋轉橫幅以跟蹤當前圖像,圖像是從5個不同圖像進行動畫處理的。如果有人點擊它,我會設置一個touchesBegan來繼續處理橫幅上的觸摸事件。我的概念驗證工程,但將其移到另一個項目中,它就打破了。Touchesbegan未檢測到正在觸摸的內容

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
UITouch *touch = [[event allTouches] anyObject]; 
if ([touch view] == myImageView){ 
    [self getImage]; 
    NSLog(@"%@", currentImage); 
} 
} 

現在,當我把破發點到我的項目,它抓住了觸摸就好了,但是當它到達 如果([觸摸視圖] == myImageView) 不檢測,圖像觀點正在被觸動。

+0

我已經重建了它,得到它使用這個工作,我忘了myImageView.userInteractionEnabled = YES;但是在我們的主要項目中,這並不是很好。 –

回答

7

不知道會導致什麼,但你有沒有嘗試過使用UIGestureRecognizer?嘗試類似下面的代碼,看看該方法是否被調用。

//Add Gesture Recognizer 
    UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageSelected)]; 
    tapped.numberOfTapsRequired = 1; 
    [theImageView addGestureRecognizer:tapped]; 

    //Memory Cleanup 
    [tapped release]; 

-(void)imageSelected 
    { 
    NSLog(@"Selected an Image"); 
    } 
+0

我剛試過這個,它甚至沒有註冊我觸摸圖像。我回想起了自己的想法,以及我在更新到新的xcode之前完成的概念證明,它仍然在iOS 4上運行。現在,概念驗證甚至不起作用。這可能是iOS 5的問題嗎? –

+0

這是可能的,我會創建一個新項目來嘗試你的POC,看看它是否仍然無效。 – aahrens

+0

我做了,而不是一件事情正在工作。這真的很麻煩。 –

3

所有你所設置userInteractionEnabled爲是在您的viewDidLoad方法如下面的第一:

[myImageView setUserInteractionEnabled:YES]; 

注意,對於myImageView,檢查通過身份檢查啓用用戶互動,我沒有工作。

然後改變

UITouch *touch = [[event allTouches] anyObject]; 

UITouch *touch = [touches anyObject]; 

從而使的touchesBegan方法看起來象下面這樣:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    if ([touch view] == myImageView) { 
     // place any code here when myImageView is touched 
    } 
} 
+0

第一行爲我節省了很多時間。謝謝。 – Deco