Ответчики с несколькими жестами для одного представления - PullRequest
0 голосов
/ 05 января 2012

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

Я посмотрел на классы UIGestureRecognizer и UITapGestureRecognizer, но не смог найти способ указать зоны изображения, которые будут с ними связаны. Это вообще возможно в iOS? И если да, то какие классы мне следует использовать?

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Самое простое решение - наложить невидимые виды на изображение и установить на них распознаватели жестов.

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

2 голосов
/ 05 января 2012

Используйте свойство locationInView:, чтобы определить, где произошло ваше касание, а затем условно вызвать метод. Вы можете сделать это, настроив CGRect s, которые соответствуют вашим областям попадания. Затем используйте функцию CGRectContainsPoint(), чтобы определить, попал ли ответвление в одну из областей попадания.

Ваше действие распознавателя жестов касания может выглядеть примерно так:

- (void)tapGestureRecognized:(UIGestureRecognizer *)recognizer
{
    // Specify some CGRects that will be hit areas
    CGRect firstHitArea = CGRectMake(10.0f, 10.0f, 44.0f, 44.0f);
    CGRect secondHitArea = CGRectMake(64.0f, 10.0f, 44.0f, 44.0f)

    // Get the location of the touch in the view's coordinate space
    CGPoint touchLocation = [recognizer locationInView:recognizer.view];

    if (CGRectContainsPoint(firstHitArea, touchLocation))
    {
        [self firstMethod];
    }
    else if (CGRectContainsPoint(secondHitArea, touchLocation))
    {
        [self secondMethod];
    }
}
...