распознаватель движения слайдов iphone - PullRequest
0 голосов
/ 22 сентября 2010

Я разрабатываю новое приложение, и мне нужно реализовать функциональность, которая часто используется во многих приложениях.Я хочу реализовать функции «следующая страница» / «предыдущая страница» скользящим жестом соответственно слева направо для случая «следующая страница» и справа налево в другом.Я видел кое-что о GestureRecognizer, которое, возможно, может мне помочь, но, к сожалению, я разрабатываю версию 3.1.2 прошивки, и она пока не поддерживаетсяЛюбое предложение или ссылка с любым учебником?

Спасибо

Ответы [ 2 ]

1 голос
/ 22 сентября 2010

Посмотрите на мой код:

UISwipeGestureRecognizer *swipeRecognizer = [ [ UISwipeGestureRecognizer alloc ] initWithTarget:self action:@selector(myFunction) ];
[ swipeRecognizer setDirection:UISwipeGestureRecognizerDirectionRight ];
[ view addGestureRecognizer:[ swipeRecognizer autorelease ] ];

Вы можете изменить направление прокрутки и т. Д .; -)

Редактировать: о, я не видел конца вашего вопроса: p Таким образом, вы должны реализовать UIView и обнаружить прикосновения Beg и touchesEnd, сохранить начало и конец CGPoint и решить, является ли это пролистыванием или остановкой;)

0 голосов
/ 22 сентября 2010

Чтобы ответить на ваш вопрос с помощью некоторого кода, это моя версия отличного примера, приведенного в этой теме.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = touches.anyObject;
    //Define "CGPoint startTouchPosition;" in  your header
    startTouchPosition = [touch locationInView:self];
    [super touchesBegan:touches withEvent:event];
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{
    UITouch *touch = touches.anyObject;
    CGPoint currentTouchPosition = [touch locationInView:self];

    // If the swipe tracks correctly.
   double diffx = startTouchPosition.x - currentTouchPosition.x + 0.1;
   double diffy = startTouchPosition.y - currentTouchPosition.y + 0.1;

   //If the finger moved far enough: swipe
    if(abs(diffx / diffy) > 1 && abs(diffx) > 100)
    {
       if (!swipeHandled) {
        [self respondToSwipe];

        //Define "bool swipeHandled;" in your header
        swipeHandled = true;
       }
    }

   [super touchesMoved:touches  withEvent:event];
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    swipeHandled = true;
    [super touchesEnded:touches withEvent:event];   
}
...