2011-04-28 52 views
8

我有兩個視圖在另一個之下。我通過頂視圖的觸摸感應旋轉下面的視圖。在嘗試進行滑動時,觸摸取消的事件在觸摸結束事件之前被調用。當移動手指觸摸開始並觸摸移動的事件被調用,然後觸摸結束事件在最後(主要)被調用。但有時在試圖緩慢移動時,觸摸取消的事件被稱爲停止觸摸事件發生。所以我無法以低速旋轉視圖。可能是什麼問題?如何避免觸摸取消事件?如何避免觸摸取消的事件?

注意:我使用core-plot lib在視圖中繪製了一些圖。

回答

15

如果您使用的是任何UIGestureRecognizers,他們在識別其手勢時會自動取消觸摸其他視圖。您可以使用識別器的cancelsTouchesInView屬性關閉此行爲。

+0

爲我工作了謝謝! – 2014-07-07 12:05:52

5

如果您沒有直接使用UIGestureReconizer,請注意UITouch的屬性gestureRecognizers。 我有同樣的問題和與此代碼我解決這個問題:

if (event.type == UIEventTypeTouches) 
{ 
    NSSet* tmpTouches = [event touchesForView:m_PhotoView]; 
    if ([tmpTouches count] == 2) 
    { 
     UITouch *tmpTouch1 = [[tmpTouches allObjects] objectAtIndex:0]; 
     UITouch *tmpTouch2 = [[tmpTouches allObjects] objectAtIndex:1]; 
     if ((tmpTouch1 != nil)&&(tmpTouch2 != nil)) 
     { 
      UIGestureRecognizer * tmpG; 
      if ([tmpTouch1.gestureRecognizers count] > 0) 
      { 
       tmpG = [tmpTouch1.gestureRecognizers objectAtIndex:0]; 
       tmpG.cancelsTouchesInView = NO; 
      } 
      if ([tmpTouch2.gestureRecognizers count] > 0) 
      { 
       tmpG = [tmpTouch2.gestureRecognizers objectAtIndex:0]; 
       tmpG.cancelsTouchesInView = NO; 
      } 
      // Code ... 
     } 
    } 
} 
+0

這對我所需要的完美,因爲我沒有使用gestureRecognizers,並且它禁止所有取消事件破壞我的其他平滑動作。感謝pocjoc。 – AndyDunn 2012-08-20 08:32:22

+1

我沒有使用手勢,但我不明白tmpTouches的重要性計爲2,並且硬編碼索引的值。你能解釋一下嗎? – sole007 2015-06-08 11:18:59

0

查找出UISwipeGestureRecognizer爲好。這對我造成了問題,並且一旦我們設置就解決了

[recognizer setCancelsTouchesInView:FALSE];