8

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

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

4

4 回答 4

23

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

于 2011-04-28T20:54:09.473 回答
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 ...
        }
    }
}
于 2012-03-07T23:53:36.183 回答
2

还要注意 UISwipeGestureRecognizer。这对我来说是个问题,一旦我们设置就解决了

[recognizer setCancelsTouchesInView:FALSE];
于 2015-09-29T03:39:59.963 回答
1

如果涉及滚动视图,请取消选中其属性内容 touch Can Cancel On Scroll在情节提要中。

于 2018-07-31T17:33:17.280 回答