我有兩個視圖在另一個之下。我通過頂視圖的觸摸感應旋轉下面的視圖。在嘗試進行滑動時,觸摸取消的事件在觸摸結束事件之前被調用。當移動手指觸摸開始並觸摸移動的事件被調用,然後觸摸結束事件在最後(主要)被調用。但有時在試圖緩慢移動時,觸摸取消的事件被稱爲停止觸摸事件發生。所以我無法以低速旋轉視圖。可能是什麼問題?如何避免觸摸取消事件?如何避免觸摸取消的事件?
注意:我使用core-plot lib在視圖中繪製了一些圖。
我有兩個視圖在另一個之下。我通過頂視圖的觸摸感應旋轉下面的視圖。在嘗試進行滑動時,觸摸取消的事件在觸摸結束事件之前被調用。當移動手指觸摸開始並觸摸移動的事件被調用,然後觸摸結束事件在最後(主要)被調用。但有時在試圖緩慢移動時,觸摸取消的事件被稱爲停止觸摸事件發生。所以我無法以低速旋轉視圖。可能是什麼問題?如何避免觸摸取消事件?如何避免觸摸取消的事件?
注意:我使用core-plot lib在視圖中繪製了一些圖。
如果您使用的是任何UIGestureRecognizers
,他們在識別其手勢時會自動取消觸摸其他視圖。您可以使用識別器的cancelsTouchesInView
屬性關閉此行爲。
如果您沒有直接使用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 ...
}
}
}
查找出UISwipeGestureRecognizer爲好。這對我造成了問題,並且一旦我們設置就解決了
[recognizer setCancelsTouchesInView:FALSE];
爲我工作了謝謝! – 2014-07-07 12:05:52