Смахивание взгляда с помощью жестов - PullRequest
0 голосов
/ 04 мая 2011

Я пытаюсь разработать приложение для Iphone;но я новичок, поэтому у меня много проблем.

У моего приложения есть представление по умолчанию и еще одно небольшое представление в главном представлении с именем flashcard.

Я хочудобавить возможность этого вида смахивания (или скольжения), как фотографии в Iphone.Например, если пользователь проводит пальцем по виду до тех пор, пока центр внутреннего вида не достигнет границ основного вида, будет две возможности: 1 - если пользователь закончит смахивать, прежде чем достичь внутреннего вида, вернется в исходное положение.2 - если пользователь не прекратит смахивание, внутренний вид будет выходить на экран с направления смахивания и возвращать экран с противоположного направления.

Поэтому я объявляю UIPanGestureRecognizer при viewDidLoad, как показано ниже

UIPanGestureRecognizer *panFlashCard = [[UIPanGestureRecognizer alloc]
                                       initWithTarget:self action:@selector(handlePanFlashCard:)];

[flashcard addGestureRecognizer:panFlashCard];
[panFlashCard release];

действие handPanFlashCard:

UIView *piece = [recognizer view];
    CGPoint center = piece.center;
    CGFloat x = 160; // the original x axis of inner view

    if ([recognizer state] == UIGestureRecognizerStateChanged) {
        CGPoint translation = [recognizer translationInView:piece ];
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.55];
        [piece setCenter:CGPointMake(piece.center.x + translation.x, center.y)];
        [UIView commitAnimations];
        CGFloat totalX;
        totalX= x + translation.x;
        if(translation.x <0)
        {            
            if (totalX <= 0)
            {
                [self showNextCard];
            }
            else
            {
                [UIView beginAnimations:nil context:NULL];
                            [UIView setAnimationDuration:0.55];
                           [piece setCenter:CGPointMake(self.view.center.x, center.y)];
                           [UIView commitAnimations];
            }
        }
        else
        {
            if (totalX >= self.view.bounds.size.width)
            {
                [self showPreviousCard];
            }
            else
            {
                [UIView beginAnimations:nil context:NULL];
                [UIView setAnimationDuration:0.55];
                [piece setCenter:CGPointMake(self.view.center.x, center.y)];
                [UIView commitAnimations];
            }
        }
    }

действие showNextCard:

[flashcard setCenter:CGPointMake(self.view.bounds.size.width + flashcard.bounds.size.width, flashcard.center.y)]; 

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.55];
    [flashcard setCenter:CGPointMake(self.view.center.x, flashcard.center.y)]; 
    [UIView commitAnimations];

действие showPreviousCard:

  [flashcard setCenter:CGPointMake(0 - flashcard.bounds.size.width, flashcard.center.y)]; 

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.55];
    [flashcard setCenter:CGPointMake(self.view.center.x, flashcard.center.y)]; 
    [UIView commitAnimations];

Когда я запускаю это приложение, оно успешно создается и работает, ночто-то не так с анимацией, некоторые ошибки в кадре, я думаю.

Пожалуйста, помогите мне исправить этот код и запустить плавную анимацию при перелистывании.

1 Ответ

0 голосов
/ 05 мая 2011

Если я понимаю, что вы пытаетесь сделать, вы можете просто использовать встроенные элементы управления для этого. Взгляните на свойство pagingEnabled класса UIScrollView. Существует также пример проекта PhotoScroller, который может помочь.

http://developer.apple.com/library/ios/#samplecode/PhotoScroller/Introduction/Intro.html

...