Как заменить TouchesBegan на UIGestureRecognizer - PullRequest
2 голосов
/ 08 июля 2011

вот проблема: Я хотел бы перейти к использованию UIGestureRecognizer в моих приложениях. По этой причине я бы хотел исключить события TouchBegan / TouchEnded из моих представлений.

Однако я не понимаю, как управлять UIGestureRecognizer с помощью касания (пользователь показывает пальцем на экран).

Самым простым является UITapGestureRecognizer, но связанный селектор срабатывает только после завершения TapGesture (ну ... конечно, это имеет смысл). Но проблема остается: как я могу прекратить использовать touchesBegan и получить это событие в любом случае из UIGestureRecognizer?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 08 июля 2011

Вот пример:

 //Pan gesture
recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
((UIPanGestureRecognizer *)recognizer).minimumNumberOfTouches = 3; //number of fingers
recognizer.delegate = self;
[self.view addGestureRecognizer:recognizer];

[recognizer release];

- (void)handlePan:(UIPanGestureRecognizer *)recognizer 
{
   if (recognizer.state == UIGestureRecognizerStateBegan)
   {
    //do something
   } else if (recognizer.state == UIGestureRecognizerStateEnded) 
   {
    //do something 
   }
}

Также реализуйте UIGestureRecognizerDelegate в файле .h. Может быть, вам нужно сделать self.view.userInteractionEnabled = YES в зависимости от вида, который вы используете. например, если это UIImageView, вам нужно установить userInteractionEnabled = YES, по умолчанию NO

1 голос
/ 08 июля 2011

За то, что ты пытаешься сделать, ты не можешь. Распознаватели жестов предназначены для жестов высокого уровня, поэтому они ведут себя одинаково во всех приложениях (например, считывание, время, необходимое для двойного нажатия, и т. Д.). Для контроля низкого уровня и выполнения действий, которые не могут распознавать, вам все равно придется реализовать логику в touchesbegan, touchesEnded и т. Д.

0 голосов
/ 13 декабря 2011

Почему бы не реализовать свой собственный touchesBegan в подклассе UIGestureRecognizer - перехватить сообщение, извлечь нужную информацию, а затем передать сообщение в touchsBegan super?

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