2014-12-08 3 views
0

Я использую следующий код, чтобы создать простой эффект масштабирования кнопки для создания простой игры. Я хочу, чтобы пользователь касался кнопки, что приводит к чему-то в период масштабирования. Если они не могут коснуться его в течение этого периода, тогда происходят другие события.Обнаружение нажатия кнопки во время анимации

Но, используя нижеследующий код, кнопка может обнаружить касание только после завершения анимации. Кого я действительно не хочу. Я хочу, чтобы он мог быть обнаружен во время анимации. Какой код я должен использовать, чтобы получить это право?

Благодаря

-(void) start{ 
hit1= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[hit1 addTarget:self action:@selector(rolebutton:) forControlEvents:UIControlEventTouchUpInside]; 
[hit1 setFrame:CGRectMake(575, 255, 45, 45)]; 
hit1.translatesAutoresizingMaskIntoConstraints = YES; 

[hit1 setBackgroundImage:[UIImage imageNamed:@"roles.png"] forState:UIControlStateNormal]; 
[hit1 setExclusiveTouch:YES]; 


hit1.transform = CGAffineTransformMakeScale(0.01, 0.01); 
[self.view addSubview:hit1]; 
[UIView animateWithDuration:1.0 
         delay:0.0 
        options:UIViewAnimationCurveEaseInOut 
       animations:^{ 
        hit1.transform = CGAffineTransformMakeScale(1, 1); 
        hit1.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        if (finished) 
        { 

         [hit1 removeFromSuperview]; 


         NSLog(@"customView Displayed ....."); 

        } 
       }]; 

}

-(void) rolebutton:(UIButton*) sender{ 
    NSLog(@"hit"); 



}/* 

ответ

2

Используйте опцию анимации UIViewAnimationOptionAllowUserInteraction.

-(void) start{ 
hit1= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[hit1 addTarget:self action:@selector(rolebutton:) forControlEvents:UIControlEventTouchUpInside]; 
[hit1 setFrame:CGRectMake(575, 255, 45, 45)]; 
hit1.translatesAutoresizingMaskIntoConstraints = YES; 

[hit1 setBackgroundImage:[UIImage imageNamed:@"roles.png"] forState:UIControlStateNormal]; 
[hit1 setExclusiveTouch:YES]; 


hit1.transform = CGAffineTransformMakeScale(0.01, 0.01); 
[self.view addSubview:hit1]; 
[UIView animateWithDuration:1.0 
         delay:0.0 
        options:UIViewAnimationCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction 
       animations:^{ 
        hit1.transform = CGAffineTransformMakeScale(1, 1); 
        hit1.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        if (finished) 
        { 

         [hit1 removeFromSuperview]; 


         NSLog(@"customView Displayed ....."); 

        } 
       }]; 
Смежные вопросы