如何避免Touches取消活动?

时间:2011-04-28 12:37:19

标签: ios cocoa-touch uitouch touchescancelled

我有两个视图一个在另一个之下。我通过顶视图的触摸感应旋转下面的视图。在尝试进行滑动时,触摸已取消的事件会在触发结束事件之前调用。当移动手指触摸开始并触摸移动事件被调用,然后触摸结束事件在最后(大多数)被调用。但有时在尝试缓慢移动时,触摸取消事件被称为停止触摸事件发生。所以我无法以慢速旋转视图。可能是什么问题?如何避免接触取消事件?

注意:我正在使用core-plot lib在视图中绘制一些图形。

4 个答案:

答案 0 :(得分:20)

如果您使用任何UIGestureRecognizers,当他们识别出他们的手势时,他们会自动取消对其他视图的触摸。您可以使用识别器的cancelsTouchesInView属性关闭此行为。

答案 1 :(得分: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 ...
        }
    }
}

答案 2 :(得分:2)

请注意UISwipeGestureRecognizer。这对我来说是个问题,一旦我们设置了

就解决了
[recognizer setCancelsTouchesInView:FALSE];

答案 3 :(得分:0)

如果涉及到滚动视图,请取消选中其属性内容,然后触摸故事框中的可以取消滚动显示