iOS UIScrollView с двумя пальцами для пейджинга и одним пальцем для «указателя» - PullRequest
1 голос
/ 11 мая 2011

Я трачу довольно много времени на то, чтобы понять, как добиться того, чего я хочу, но пока не нашел правильного решения для этого. У меня есть UIScrollView, где я изменил panGestureRecognizer с распознавания одного или двух пальцев, так что подкачка работает только при использовании двух пальцев. Теперь я хочу добавить дополнительный panGestureRecognizer, который показывает курсор, если я выполняю панорамирование одним пальцем. Я попробовал это, просто добавив дополнительный panGestureRecognizer в UIScrollView, но затем приложение сразу вылетает. Поэтому я подумал о добавлении подпредставления, прозрачного и расположенного над UIScrollView, и о том, что я делегирую жесты двумя пальцами в UIScrollView с помощью чего-то вроде resgin firstResponder. Я также подумал о перезаписи pangestureRecognizer UIScrollView и позволил ему добавить Subview, где находится мой «указатель пальца» (маленькая точка, которая находится в центре, где я сейчас касаюсь экрана). Я совершенно не знаю, как мне идти и как это реализовать. Ваша помощь очень ценится! Большое спасибо!

Timo

1 Ответ

0 голосов
/ 19 июля 2011

Хорошо, это второй раз редактирование моего ответа. Это может помочь вам.

Если вы расширяете UIScrollView, вы можете переопределить эти методы следующим образом:

//In your h file
BOOL cursorShown;

//In your m file
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{

   if([touches count] == 1)
   {
      cursorShown = YES;

      CGPoint touchLocation = [[touches anyObject] locationInView:self.superview]

      //Add your cursor to the parent view here and set its location to touchLocation
   }
}


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{
   if(cursorShown == YES)
   {
      CGPoint touchLocation = [[touches anyObject] locationInView:self.superview]

      //Move your cursors location to touchLocation
   }
}


-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{
   if(cursorShown == YES)
   {
      cursorShown = NO;
      //Destroy your cursor
   }
}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{
   if(cursorShown == YES)
   {
      cursorShown = NO;
      //Destroy your cursor
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...