как изменить размер uiview с помощью shake - PullRequest
1 голос
/ 30 марта 2011

Я хочу изменить размер подпредставления с помощью встряхивания на iPad, у меня UIView содержит подпредставление о том, как определить сотрясение и ответить в соответствии с ним

любое предложение сделать это

Ответы [ 4 ]

0 голосов
/ 30 марта 2011

Если вы ориентируетесь на iOS 3.0 и более поздние версии, вы можете использовать тот факт, что при встряхивании устройства генерируется UIEvent с подтипом UIEventSubtypeMotionShake. Руководство по обработке событий: события движения - события встряхивания-движения

Ваш UIView должен переопределить следующие методы:

- (BOOL)canBecomeFirstResponder
{
  return YES;
}

- (void)viewDidAppear:(BOOL)animated
{
  [self becomeFirstResponder];
}

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
   // Clean what you need to
}

- (void) motionEnded:(UIEventSubType)motion withEvent:(UIEvent *)event
{
   if (UIEventSubtypeMotionShake == motion)
   {
      // Resize your view
   }
   else
   {
     [super motionEnded:motion withEvent:event];
   }
}
0 голосов
/ 30 марта 2011

У Apple есть небольшой раздел о том, как с ними справиться: События движения . По сути, вы можете переопределить три разных метода из любого класса, который наследуется от UIResonder:

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {

}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {    
    [UIView beginAnimations:nil context:nil];    
    [UIView setAnimationDuration:0.5];

    self.view.transform = CGAffineTransformIdentity;

    for (UIView *subview in self.view.subviews) {    
        subview.transform = CGAffineTransformIdentity;
    }

    [UIView commitAnimations];

    for (TransformGesture *gesture in [window allTransformGestures]) {    
        [gesture resetTransform];    
    }    
}

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {

}
0 голосов
/ 30 марта 2011

Есть события движения , которые передаются как UIEvents, которыми вы можете воспользоваться.Как только движение закончится, и вы захватите событие встряхивания, вы можете изменить размер своего представления по мере необходимости.

0 голосов
/ 30 марта 2011

Как определить жест дрожания iphone один раз!

и после обнаружения дрожания вызовите действие, которое изменит размер вида.Например,
[myview setFrame:CGRectMake(0,0,150,150)];

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