Как избежать касания отмененного события?

У меня есть два взгляда один под другим. Я вращаю нижний вид, ощущая прикосновение вида сверху. при попытке выполнить считывание событие отмены касаний вызывается до завершения события касаний. При перемещении касания начинаются касания и вызываются перенесенные события, а затем касания заканчиваются, событие вызывается последним (чаще всего). Но иногда при попытке двигаться медленно событие отмены касаний называется остановкой событий касания. Так что я не мог вращать вид на медленной скорости. В чем может быть проблема? как избежать касаний отмененным событием?

Примечание: я рисую некоторые графики в представлениях с использованием core-plot lib.

4 ответа

Решение

Если вы используете какой-либо UIGestureRecognizers они автоматически отменяют прикосновения к другим представлениям, когда они распознают свой жест. Вы можете отключить это поведение с помощью cancelsTouchesInView собственность распознавателя.

Если вы не используете UIGestureReconizer напрямую, обратите внимание на свойство жеста-распознавателя UITouch. У меня та же проблема, и с помощью этого кода я решаю ее:

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];

Если используется представление с прокруткой, снимите флажок с содержимым его свойства и нажмите " Отменить при прокрутке" в окне истории.

Другие вопросы по тегам