Перетащите событие в подпредставление UIScrollView - PullRequest
1 голос
/ 09 сентября 2011

Как добавить событие перетаскивания в подпредставление UIScrollView? Структура следующая:

-UIView
   -UIScrollView
      -UIView
      -UIView
        ...

Я пытался начать со следующего:

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *aTouch = [touches anyObject];
CGPoint location = [aTouch locationInView:self.superview.superview];
[UIView beginAnimations:@"Dragging A DraggableView" context:nil];
self.frame = CGRectMake(location.x, location.y, 
                        self.frame.size.width, self.frame.size.height);
[UIView commitAnimations];

}

Но ничего не происходит! Помощь будет очень ценится. Спасибо

Ответы [ 2 ]

1 голос
/ 06 июля 2012

Просто если кто-нибудь найдет этот вопрос, как я, я решил эту проблему, добавив распознаватель жестов в подпредставления в просмотре прокрутки. Распознаватель жестов будет обрабатывать само событие касания.

0 голосов
/ 04 сентября 2012

Бруно, одна возможность - использовать распознаватели жестов, как упоминает Скотт.

Другая возможность - использовать упомянутый вами метод touchesMoved:. Использование метода touchesMoved: требует, чтобы вы реализовали еще три метода: touchesBegan :, touchesEnded :, touchesCancelled :. Они охватывают фазы касания пальцем экрана:

  • Первый контакт (touchesBegan) позволяет вам устанавливать переменные по мере необходимости.
  • Непрерывное движение (touchesMoved) позволяет отслеживать движение и непрерывно перемещать контент.
  • И, наконец, уберите палец (touchchesEnded), где вы можете завершить любые изменения, которые хотите сохранить.
  • touchesCancelled требуется для очистки, если жест прерван (из-за телефонного звонка или другого контроллера, получающего событие касания).

Вам нужны все четыре метода в одном и том же классе, иначе суперкласс, реализующий метод, захватит обработку касанием, и ваш код не будет работать должным образом.

С уважением, nobi

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