Анимация происходит, если только я последовательно нажимаю на одну и ту же кнопку, не работает при первом нажатии - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь анимировать анимацию дрожания на кнопке, она работает, если только я последовательно нажимаю на одну и ту же кнопку. Например, кнопка A, сценарий, который она анимирует и не выполняет:

  • Нажмите A (не анимировать), нажмите A (анимировать), нажмите A (анимировать), нажмите A (анимировать) ) и т. д. ...
  • Нажмите A (не анимировать), нажмите B (не анимируйте), нажмите A (не анимируйте), нажмите B (не анимируйте), Нажмите A (не анимировать), нажмите A (анимировать) ...

Это код:

-(void)shakeButton:(UIButton *)sender{
    CABasicAnimation *shake = [CABasicAnimation animationWithKeyPath:@"position"];
    [shake setDuration:0.1];
    [shake setRepeatCount:2];
    [shake setAutoreverses:YES];
    [shake setFromValue:[NSValue valueWithCGPoint:
                             CGPointMake(sender.center.x - 5,sender.center.y)]];
    [shake setToValue:[NSValue valueWithCGPoint:
                           CGPointMake(sender.center.x + 5, sender.center.y)]];
    [sender.layer removeAllAnimations];
    [sender.layer addAnimation:shake forKey:@"position"];
}

Кнопка находится в многократно используемой ячейке UICollectionView:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"mycellid" forIndexPath:indexPath];
    //some code
    [cell.btn addTarget:self action:shakeButton: forControlEvents:UIControlEventTouchUpInside];
    //some code
    return cell;
}

Интересно, почему это так?

...