2012-05-14 62 views
2

我有一個UIImageView這是一個動畫循環。我想檢測它是否已被觸摸,並打印出與NSLog消息。這個想法是,如果它已經被觸摸,則執行另一個動畫,但是現在我無法檢測到它是否已經被觸摸了。用戶交互已啓用。下面是代碼:檢測是否移動了移動的UIImageView

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    UIView *touchedView = [touch view]; 
    if (touchedView == imgSun) { 
     NSLog(@"Sun touched"); 
     [self spinSun]; 
    } else if (touchedView == imgBee) { 
     NSLog(@"Bee touched"); 
    } else if (touchedView == imgClouds) { 
     NSLog(@"Clouds touched"); 
    } 
} 

動畫方法:

-(void) beeBobbing 
{ 
    [UIView animateWithDuration:1.0f delay:0 options:(UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat) animations:^{ 
     CGPoint bottomPoint = CGPointMake(215.0, 380.0); 
     imgBee.center = bottomPoint; 
    } completion:^(BOOL finished) { 

    }];  
} 
+2

你是否繼承了UIImageView?因爲否則你不能訪問touchesBegan委託方法。另外,你爲什麼不簡單地使用UIGestureRecongizers? – Lefteris

+0

另一種方法是使用自定義按鈕並將圖像作爲此按鈕的背景圖像,然後您可以輕鬆瞭解它是否被觸摸 – sujith1406

+0

我對編程非常陌生,以前沒有使用過UIGestureRecognizers。使用觸摸開始beofre我決定這樣做。下面的答案似乎對我有用 – garethdn

回答

2

這可能是因爲用戶集成默認情況下動畫過程中禁用。

見animateWithDuration:延遲:選項:動畫:完成:文件:

在動畫,用戶交互暫時被動畫的看法禁用。 (在iOS 5之前,整個應用程序都禁用用戶交互。)如果您希望用戶能夠與視圖進行交互,請在options參數中包含UIViewAnimationOptionAllowUserInteraction常量。

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html1

您可以概率只需添加UIViewAnimationOptionAllowUserInteraction傳遞給選項中你的方法「beeBobbing」的值。

+0

這很好,謝謝。 – garethdn

+0

@garethdn:如果工作正常,你應該接受J_D的回答 - 它應該工作:) –