ОтменаTrackingWithEvent вызывается, даже сенсорный делегат возвращает YES

Я попытался использовать пользовательский UIControl в своем контроллере представления. Мой пользовательский класс, который подклассифицирует UIControl и выделяет экземпляр для моего пользовательского элемента управления и добавляет его в представление моего контроллера представления, следуя коду

Я реализовал следующие делегаты, которые возвращаются для YES, чтобы обеспечить непрерывное касание.

 - (BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
        [super beginTrackingWithTouch:touch withEvent:event];
        return YES;
    }

    - (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
        [super continueTrackingWithTouch:touch withEvent:event];
        return YES;
    }

    - (void) endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
        [super endTrackingWithTouch:touch withEvent:event];
    }

    - (void)cancelTrackingWithEvent:(UIEvent *)event
    {
        NSLog(@"Touch cancelled");
    }

Но - (void)cancelTrackingWithEvent:(UIEvent *)event звонят, когда я отслеживаю. После этого я должен был взяться за палец и перетащить снова. тогда только я получаю начало и продолжение отслеживания делегатов


person jailani    schedule 15.02.2014    source источник


Ответы (1)


Согласно вашему вопросу, при отслеживании cancelTrackingWithEvent: звонят. Верно. Проверьте свое представление или суперпредставление с помощью Gesture обратных вызовов. Если вы добавили pan Gesture, этот тип проблемы возникнет. То есть ваш контрольный сенсор будет begin and get tracked upto this tracking change to panning.

Чтобы решить эту проблему, установите тег для своего вида и отмените вызов жестом, как показано ниже.

Во время создания представления

yourView.tag = CANCELVIEWTAG;

Отменить жест, если прикосновение произошло в вашем представлении.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    if (touch.view.tag == CANCELVIEWTAG) {
        return NO;
    }
    return YES;
}
person Mani    schedule 15.02.2014