Ответчики с несколькими жестами для одного представления

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

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

2 ответа

Решение

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

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

Использовать locationInView: свойство, чтобы определить, где произошло ваше касание, а затем условно вызвать метод. Вы можете сделать это, настроив некоторые CGRects, которые соответствуют вашим областям попадания. Затем используйте 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];
    }
}
Другие вопросы по тегам