Анимированные движущиеся кнопки UIB не реагируют на прикосновения - PullRequest
2 голосов
/ 23 августа 2010

Я пытаюсь анимировать UIB-кнопку для перемещения вверх по экрану.В любой момент пользователь может прикоснуться к нему.Тем не менее, он не реагирует на прикосновения во время движения, только в начале и в конце анимации.Я предполагаю, что это потому, что сама кнопка не движется, просто изображение.Любые идеи, как я могу решить это?Вот мой код до сих пор.Спасибо!

- (void)viewDidLoad {
    [self newBubble];
    [super viewDidLoad];
}

- (void)newBubble {
    UIButton *bubble = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
    bubble.frame = CGRectMake(10, 380, 50, 50);
    UIImage *bubbleImage = [UIImage imageNamed:@"bubble.png"];
    [bubble setBackgroundImage:bubbleImage forState:UIControlStateNormal];
    bubble.imageView.contentMode = UIViewContentModeScaleAspectFit;
    [bubble addTarget:self action:@selector(bubbleBurst:) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:bubble];

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:5.0];
    CGAffineTransform newTransform = CGAffineTransformMakeScale(1.5, 1.5);
    bubble.transform = CGAffineTransformTranslate(newTransform, 10, -200);
    [UIView commitAnimations];
}

- (IBAction)bubbleBurst:(id)sender {
    NSLog(@"Bubble burst");
    UIButton *bubbleBurst = sender;
    [bubbleBurst removeFromSuperview];
}

Ответы [ 4 ]

13 голосов
/ 28 июня 2011

Метод +[UIView animateWithDuration:delay:options:animations:completion:] принимает аргумент UIViewAnimationOptions. Если вы включите UIViewAnimationOptionAllowUserInteraction, вы сможете нажать кнопку, пока она анимируется:

    [UIView animateWithDuration:5.0
                      delay:0.0
                    options:UIViewAnimationOptionAllowUserInteraction
                 animations:^{
        CGAffineTransform newTransform = CGAffineTransformMakeScale(1.5, 1.5);
        bubble.transform = CGAffineTransformTranslate(newTransform, 10, -200);
    } completion:nil];
1 голос
/ 07 сентября 2010

Ну, после публикации аналогичного вопроса, я нашел ответ здесь

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

0 голосов
/ 24 августа 2010

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

0 голосов
/ 23 августа 2010

Я почти уверен, что вам придется использовать Core Animation, если вы хотите, чтобы кнопка реагировала на прикосновения во время движения, но я никогда не делал этого, так что это скорее совет, чем ответ!

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