У меня проблема с распознавателями жестов, отвечающими на неправильные подпредставления, что дает? - PullRequest
1 голос
/ 24 мая 2011

У меня есть родительское представление под названием ImageViewController.К этому представлению я добавляю до двух подпредставлений, называемых ImageDetailViewController.В этом подробном контроллере представления я объявляю несколько жестов, которые должны выполнять определенные действия на только их соответствующие представления .Вот код:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeModeButtonPushed:)];
[tap setNumberOfTapsRequired:2];
[tap setNumberOfTouchesRequired:1];
[tap setDelegate:self];
[openGLView addGestureRecognizer:tap];
[tap release];

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(touchDidDrag:)];
[panRecognizer setMaximumNumberOfTouches:1];
[openGLView addGestureRecognizer:panRecognizer];
[panRecognizer release];

UIPanGestureRecognizer *shiftRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(shiftView:)];
[shiftRecognizer setMinimumNumberOfTouches:2];
[openGLView addGestureRecognizer:shiftRecognizer];
[shiftRecognizer release];

UIPinchGestureRecognizer *pinchRecog = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(viewPinched:)];
[openGLView addGestureRecognizer:pinchRecog];
[pinchRecog release];

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

Проблема в том, что когда я 1 палец провожу пальцем, иногда он вызывает вид, который должен, но большинствочасто это срабатывает с другой точки зрения!Это не имеет никакого смысла!Я попробовал отладку и все остальное, что могу придумать, но я просто не понимаю, как два отдельно объявленных объекта могут смешиваться следующим образом.

Чтобы сделать вещи более странными, есть некоторые жесты, которые работает правильно.Так что это всего лишь один жест вокруг пальца, который все испортил.

Чего мне не хватать?Как я могу даже отладить это?Все выглядит так, будто объекты действительно отделены друг от друга, но они не ведут себя таким образом ...

1 Ответ

0 голосов
/ 24 ноября 2011

Вы можете отладить / решить эту проблему, выяснив, к какому виду обращается ваш распознаватель жестов: посмотрите на этот код:

(void) NAMEOFFUNCTION: (UITapGestureRecognizer *) распознаватель {

if ([yourViewController.view pointInside:[recognizer locationInView:presentationSlideViewController.view] withEvent:nil]) {


}

Отфильтруйте все ваши подпредставления, в этом примере я проверяю, находится ли касание пальца ниже определенной координаты x, а затем y. Сначала проверьте, находится ли точка внутри подпредставления _buttonVIew: //

if ([_buttonView pointInside:[recognizer locationInView:_buttonView] withEvent:nil]) {

Затем проверьте, находится ли касание с координатой ниже 50

    if (([recognizer locationInView:_buttonView].x < 50) && ([_leftArrow isEnabled])) {
        pageIndex -= 1;
    }
   //otheriwse check to see if its over 970
        else if (([recognizer locationInView:_buttonView].x > 970) && ([_rightArrow isEnabled])) {
            pageIndex += 1;
        }

    [self scrollViewScrollToRect:pageIndex];
    [self fadeArrows:1.0];
    return;

    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...