2011-07-16 49 views
6

我使用cocos2d的渲染精靈,和UIGestureRecognizers多個姿勢,以允許用戶平移,旋轉和縮放精靈。爲UIGestureRecognizers(iPhone,cocos2d的)

我有使用如下代碼隔離每個工作:

UIPinchGestureRecognizer *pinchRecognizer = [[[UIPinchGestureRecognizer alloc] initWithTarget:layer action:@selector(handlePinchFrom:)] autorelease]; 
[viewController.view addGestureRecognizer:pinchRecognizer]; 

UIRotationGestureRecognizer *rotationRecognizer = [[[UIRotationGestureRecognizer alloc] initWithTarget:layer action:@selector(handleRotationFrom:)] autorelease]; 
[viewController.view addGestureRecognizer:rotationRecognizer]; 

不過,我想規模和如果用戶同時旋轉捏他們的手指一起旋轉精靈(照片應用程序呢這個,例如)。不幸的是,識別器似乎陷入了「旋轉」或「捏」模式,並且不會同時調用這兩個處理器:(

所以,基本上,我想知道 - 這是否意味着我不能使用UIGestureRecognizers?我可以將兩個識別並完成所有的動作在單處理器?我將不得不繼承UIGestureRecognizer是類似「PinchAndRotateRecognizer」。

幫助讚賞:)

回答

27

就實現你的委託gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

我有一個UIPinchGestureRecognizerUIPanGestureRecognizerUIRotationGestureRecognizer設置,我希望他們都在同一時間工作。我也有一個UITapGestureRecognizer這是我做的希望可以同時識別。我所做的只是這樣的:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    if (![gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] && ![otherGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) { 
     return YES; 
    } 

    return NO; 
} 
-5

只有一個手勢識別器可以同時「活動」。首先觸發的那個贏。這意味着您不能將UIPinchGestureRecognizer和UIRotationGestureRecognizer結合起來以達到所需的效果。

你可以嘗試像你說的子類UIGestureRecognizer。閱讀文檔中的子類註釋!

+8

這是不正確的。只需實現gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:在您的委託中,請參閱下面的答案。 –