Как обнаружить прикосновения к UIImageView во время его анимации - PullRequest
0 голосов
/ 01 августа 2011

У меня есть UIImageview, который перемещается из позиции в другую.Когда я пытаюсь нажать на изображение во время анимации, сенсорный метод делегата не вызывается.Но когда я нажимаю на изображение после завершения анимации, выполняется метод делегата.Как я могу обнаружить сенсорное событие в uiimageview, когда оно меняет свою позицию.

мой код:

vwb2 = [[UIView alloc] initWithFrame:CGRectMake(240, 500, 50, 50)];
[self.view addSubview:vwb2];
ballon2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"b2.png"]];
ballon2.userInteractionEnabled = TRUE;
ballon2.frame = CGRectMake(0, 0, 50, 50);
[vwb2 addSubview:ballon2];
[ballon2 release];

Редактировать:

Мой код для анимации:

[UIView animateWithDuration:2.0
                 animations:^{ 
                     vwb1.center = CGPointMake(260, 40);
                 } 
                 completion:^(BOOL finished){

                     [UIView animateWithDuration:1.5
                                      animations:^{ 
                                          vwb2.center = CGPointMake(260, 100);
                                      } 
                                      completion:^(BOOL finished){
                                          [UIView animateWithDuration:1.0
                                                           animations:^{ 
                                                               vwb3.center = CGPointMake(260, 160);
                                                           } 
                                                           completion:^(BOOL finished){
                                                               [UIView animateWithDuration:1.0
                                                                                animations:^{ 
                                                                                    vwb4.center = CGPointMake(260, 220);
                                                                                } 
                                                                                completion:^(BOOL finished){
                                                                                    [UIView animateWithDuration:1.0 animations:^{ 
                                                                                        vwb5.center = CGPointMake(260, 280);
                                                                                    } ];
                                                                                }];
                                                           }];

                                      }
                      ];

                 }];

Спасибо
Панкай

Ответы [ 3 ]

0 голосов
/ 01 августа 2011

В моем проекте я не обнаружил никакого события касания UIImageView.Я обнаружил событие касания родительского вида и использовал точку касания и прямоугольник UIImageView для обнаружения касания UIImageView.Может быть, вы можете попробовать это.

- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
    UITouch *touch = [touches anyObject];
    CGPoint pt = [touch locationInView:self];
    bool inX = NO;
    bool inY = NO;
    if(pt.x >= myImgView.frame.origin.x && pt.x <= myImgView.frame.origin.x + myImgView.frame.size.width)
        inX = YES;
    if(pt.y >= myImgView.frame.origin.y && pt.y <= myImgView.frame.origin.y + myImgView.frame.size.height)
        inY = YES;
    if(inX && inY)
        NSLog(@"myImgView is touched");
}
0 голосов
/ 08 августа 2011

Я отправил правильное решение как редактировать к моему оригинальному вопросу

0 голосов
/ 01 августа 2011

Вы можете получить позицию ...

-(CGRect) getPos
{
    CGRect pos = 0;
    CALayer *layer = yourAnimationView.layer.presentationLayer;
    if(layer)
        pos = layer.frame;

    return pos;
}

И проверьте CGRectContainsPoint ([self getPos], touchPoint) в методе touchesEnded
( Мой старый ответ )

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