Ответчики с несколькими жестами для одного представления
У меня есть изображение, которое я хотел бы настроить для ответа на несколько различных респондентов жестов. Так, например, если коснуться одной части изображения, я бы хотел, чтобы вызывался один селектор, а другой селектор для другой части картинки.
Я посмотрел на UIGestureRecognizer
а также UITapGestureRecognizer
классы, но я не смог найти способ указать зоны изображения, которые будут связаны с ними. Это вообще возможно в iOS? И если да, то какие классы мне следует использовать?
2 ответа
Самое простое решение - наложить невидимые виды на изображение и установить на них распознаватели жестов.
Если это невозможно, вам придется посмотреть на locationInView в обработчике касаний распознавателя жестов и выяснить, что вы хотите сделать, в зависимости от того, куда нажал пользователь.
Использовать 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];
}
}