Как избежать касания отмененного события? - PullRequest
8 голосов
/ 28 апреля 2011

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

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

Ответы [ 4 ]

21 голосов
/ 29 апреля 2011

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

5 голосов
/ 08 марта 2012

Если вы не используете UIGestureReconizer напрямую, обратите внимание на свойство gestRecognizers 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 ...
        }
    }
}
2 голосов
/ 29 сентября 2015

Также обратите внимание на UISwipeGestureRecognizer.Это было причиной проблемы для меня и решается, как только мы установим

[recognizer setCancelsTouchesInView:FALSE];
0 голосов
/ 31 июля 2018

Если задействовано представление прокрутки , снимите отметку его содержимое свойства коснитесь Можно отменить при прокрутке в сюжете.

...