Перевод жестов панорамирования в направлении Y, перемещение позиции UIView - PullRequest
0 голосов
/ 19 апреля 2020

Я создал ширину экрана UIView и высоту экрана / 3, когда я нажимал кнопку, он отображал UIView, и позиция Y начиналась с высоты экрана / 2, а остальная часть UIView находилась вне экрана. Я добавил жест панорамирования и хочу, чтобы он перемещал UIView в направлении Y. При перетаскивании вниз в направлении Y +100, позволяя go пальцу, он привязывает позицию к / 3 высоте экрана, при перетаскивании вверх -100 он привязывается к / 2 высоте экрана, а затем, если перетаскивать дальше вверх, он отклоняет UIView. Что-то вроде того, как вел себя ящик представления приложения для карт. Если направление Y + 100, показать UIView (0, 0, SCREEN_WIDTH, SCREEN_HEIGHT * 2/3), если направление Y -100 показать UIView (0, START_POINT, SCREEN_WIDTH, SCREEN_HEIGHT * 2/3) и, если направление Y - 300 это отклоняет UIView. Я пытался заставить его работать, но пока не повезло, заглянул в гугл и ничего не смог найти. Я был бы признателен, если бы кто-нибудь смог мне помочь, пока он в Цель C. Мои коды ниже. Спасибо

- (void)panGestureHandler:(UIPanGestureRecognizer*)recognizer {
  if (self.startY == -1) self.startY = self.testView.center.y;
     if (self.expandY == -1) self.expandY = self.testView.center.y;

    CGPoint translation = [recognizer translationInView:self.testView];

    if (recognizer.state == UIGestureRecognizerStateEnded || recognizer.state == UIGestureRecognizerStateCancelled) {


        if ((self.testView.center.y + translation.y) <= (self.startY + 100) && (self.testView.center.y + translation.y) > self.startY) {

             self.testView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT * 2 /3);

        } else if ((self.testView.center.y + translation.y) <= self.startY -100) {

             [self hideHubView];

        } else {

            self.testView.center = CGPointMake(self.testView.center.x, self.startY);

        }       
    }

  [recognizer setTranslation:CGPointMake(0,0) inView: self.testView];
}
...