2013-08-27 6 views
5

Я пытался протащить вещи в левом положении (означает между левым и нижним). Но UISwipeGesture распознает только левый, правый, вниз и вверх.ios Реализовать UISwipeGestureRecogniser в любом направлении под любым углом

Я хочу добавить жест на весь экран. Затем, всякий раз, когда пользователь щелкает по экрану, я хочу знать начальную и конечную координаты салфетки. Это может быть любой угол и любая позиция. Есть ли способ получить начальные и конечные координаты салфетки в iOS

Пожалуйста, помогите мне. Я плохо застрял. Thanx заранее.

+0

Вы можете использовать Пан жест вместо Размаха, где вы можете начальные и конечной точку, с которой вы можете получить направление в зависимости от координат. Или лучшим способом было бы использовать методы касаний в представлении. –

ответ

4

Теперь я сделал эту реализацию, выполнив следующие действия: -

Вы можете реализовать некоторые методы делегата после расширения класса «UIGestureRecognizer».

Вот методы.

// Это даст отправную точку касания

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGPoint startSwipePoint= [touches.anyObject locationInView:self.view]; 
} 

// Это даст точку касания на основе нормальную

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGPoint point=[touches.anyObject locationInView:self.view]; 
} 

// Это будет точка конца салфетки

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGPoint endSwipePoint= [touches.anyObject locationInView:self.view]; 
} 

// Здесь вы найдете код для расчета угла между двумя точками. Я использую начальную точку и конечную точку. Но вы можете использовать любого из двух точек в соответствии с вашим требованием

CGFloat angle=atan2(startSwipePoint.y -endSwipePoint.y,endSwipePoint.x -  startSwipePoint.x) * Rad2Deg; 
1

Ну, один маршрут должен был бы использовать UIPanGestureRecognizer. Панорамные жесты не заботятся о том, в каком направлении они идут, и могут отслеживать свое местоположение в пределах представления. Вот пример того, как получить эти очки. (Не обращайте внимания на очевидные проблемы сфера/хранения)

- (void)panDetected:(UIPanGestureRecognizer *)gesture 
{ 
    if (gesture.state == UIGestureRecognizerStateBegan) { 
     CGPoint startingPoint = [gesture locationInView:gesture.view]; 
    }else if (gesture.state == UIGestureRecognizerStateEnded) { 
     CGPoint endPoint = [gesture locationInView:gesture.view]; 
    } 
} 

Однако, если вы решительно настроены на использовании салфетки жест распознавателей, вы можете изменить в основном полный diagonalish салфетки жест подкласс, который я сделал в связанном ответ здесь: How to make a combined gestures?

Этот подкласс позволяет указать угол допуска, который вы можете установить на 44,99 градуса, что позволит обнаруживать салфетки практически в каждом направлении.

+0

UIPanGesture требует, чтобы объект был первым. – vntstudy

 Смежные вопросы

  • Нет связанных вопросов^_^