8

私は上下に2つのビューを持っています。上面図のタッチセンシングで下図を回転させています。スワイプを試みている間、タッチが終了したイベントの前に、タッチがキャンセルされたイベントが呼び出されます。指を動かしている間、タッチが始まり、タッチが動かされたイベントが呼び出され、最後にタッチが終了したイベントが呼び出されます(ほとんど)。ただし、ゆっくりと移動しようとしているときに、タッチがキャンセルされたイベントは、タッチイベントの発生を停止すると呼ばれることがあります。そのため、ビューを低速で回転させることができませんでした。何が問題なのですか?タッチキャンセルイベントを回避する方法は?

注:core-plotlibを使用してビューにいくつかのグラフを描画しています。

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

スクロールビューが含まれている場合は、ストーリーボードの[スクロール時にキャンセルできます]をタッチして、プロパティコンテンツのチェックを外します。

于 2018-07-31T17:33:17.280 に答える