タッチキャンセルされたイベントを避ける方法は?
-
26-10-2019 - |
質問
もう1つの下に2つのビューがあります。トップビューのタッチセンシングで以下のビューを回転させています。スワイプを作ろうとしている間、タッチキャンセルされたイベントは、タッチエンドイベントの前に呼び出されます。指の動きが始まり、タッチが動いたイベントが呼び出され、その後、最後のイベントが最後に(ほとんど)呼ばれます。しかし、時にはゆっくりと移動しようとすると、タッチキャンセルされたイベントがタッチイベントを停止するように呼ばれます。だから、私は視野を遅い速度で回転させることができませんでした。何が問題なのでしょうか?タッチキャンセルされたイベントを避ける方法は?
注:Core-Plot Libを使用して、ビューでいくつかのグラフを描画しています。
解決
使用している場合 UIGestureRecognizers
彼らは自分のジェスチャーを認識したときに他のビューへのタッチを自動的にキャンセルします。この動作をでオフにすることができます cancelsTouchesInView
認識者の財産。
他のヒント
uigesturereconizerを直接使用していない場合は、UitouchのプロパティGesturecognizersに注意してください。私は同じ問題を抱えており、このコードでそれを解決します:
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];
もし スクロールビュー 関与しています、 チェックを解除します そのプロパティコンテンツタッチ スクロールでキャンセルできます ストーリーボードで。
所属していません StackOverflow