回答

0

這應該很容易。創建兩個手勢識別器。 UIPinchGestureRecognizer和UIPanGestureRecognizer。不要忘記成爲兩者的代表!

pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleHandler:)]; 
    [pinchRecognizer setDelegate:self]; 
    [pinchRecognizer setDelaysTouchesBegan:NO]; 
    [pinchRecognizer setDelaysTouchesEnded:NO]; 
    [pinchRecognizer setCancelsTouchesInView:NO]; 
    panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panHandler:)]; 
    [panRecognizer setMaximumNumberOfTouches:2]; 
    [panRecognizer setMinimumNumberOfTouches:1]; 
    [panRecognizer setDelegate:self]; 
    [panRecognizer setDelaysTouchesBegan:NO]; 
    [panRecognizer setDelaysTouchesEnded:NO]; 
    [panRecognizer setCancelsTouchesInView:NO]; 

現在執行下面的手勢委託方法。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
return YES; 

}

這將使這兩個處理器被觸發,這樣當你鬆開手指將盤的一個,但是當你有他們兩個就掐。

+0

好的,謝謝。我注意到的一件事是,一旦一根手指被移除,當它切換到平移手勢時,那麼兩個手勢識別器都變爲活動的,平底鍋和捏。我想我可以解決這個問題..但是,一旦一根手指被移除,是否會完全放棄捏手勢識別器?看着UIGestureRecognizer文檔,我猜你不能。 – Joe

+0

另外還有一件事..當允許同時識別手勢時,panGestureRecognizer調用它的方法,但視圖的superview的panGestureRecognizer也是如此。這對我來說似乎有些奇怪,我不太瞭解背後的邏輯。我假設無法防止這種情況呢? – Joe

+0

您可以通過移除其目標( - (void)removeTarget:(id)目標操作:(SEL)操作)或通過簡單地禁用它來阻止觸發手勢regoznier(http://stackoverflow.com/questions/6593772/如何取消重置一個uigesturerecognizer)。因此,無論何時您想讓任何識別器停止,只需將其禁用即可。 我從來沒有經歷過你的第二個問題(關於父母的觀點)。也許你可以分享一些你用來創建手勢識別器的代碼,以查看可能發生的事情。祝你好運。 –

相關問題