кнопка xcode при перемещении с помощью UIViewAnimation

Я не могу сделать действие кнопки, когда кнопка движется. Может ли кто-нибудь помочь мне, как скрыть движущуюся кнопку при нажатии на нее? Он не реагирует, когда я нажимаю кнопку. вот код:

-(void)createTurtle { NSUInteger r = arc4random_uniform(284) + 1; NSUInteger randomTitle = arc4random_uniform(1000000) + 1; turtle = [[UIButton alloc] init]; turtle.frame = CGRectMake(r, 0, 36, 47); [turtle setImage:[UIImage imageNamed:@"turtle.png"] forState:UIControlStateNormal]; [turtle addTarget:self action:@selector(turtleTouched:) forControlEvents:UIControlEventTouchDown]; [turtle setTitle:[NSString stringWithFormat:@"%lu", (unsigned long)randomTitle] forState:UIControlStateNormal]; [turtle setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [self.view bringSubviewToFront:turtle]; [self.view addSubview:turtle]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:16]; [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; turtle.frame = CGRectMake(turtle.frame.origin.x, self.view.frame.size.height, 36, 47); [UIView commitAnimations]; } - (void) turtleTouched: (id) sender { UIButton *button = sender; // Typecast sender button.hidden = YES; } 

ваш метод не будет срабатывать, даже если вы нажмете на него. но он will fire when you click in its final frame во время анимации.

Допустим, у вас кнопка имеет исходный кадр (0,0,100,100) ,
Теперь вы переместите его в кадр (200,200,100,100 ).

при перемещении, если вы нажмете в области (200,200,100,100)-final frame , тогда вы получите события. но в областях в middle of path подобных (50,50,100,100) , вы не получите событий.

Потому что, когда вы начинаете анимацию, рамка кнопки мгновенно меняется на конечный кадр, а кнопка просто переходит из исходной позиции в конечную позицию.

Таким образом, вместо этого вы можете переопределить метод touchhesBegan своего контроллера viewController и проверить, может ли сенсорная точка находиться в transitional frame .

 transitionFrame = [button.layer.presentationLayer frame]; 

Рамка вашей кнопки всегда будет окончательной рамкой во всей анимации.

Добавлен код:

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ CGPoint p =[((UITouch *)[touches anyObject]) locationInView:self.view]; CGRect r= [turtle.layer.presentationLayer frame]; BOOL contains= CGRectContainsPoint(r, p); if(contains) turtle.hidden=YES; } 

Попробуйте этот код:

 - (void) turtleTouched: (id) sender { UIButton *button = sender; // Typecast sender button.hidden = YES; } 

Если вы хотите скрыть его при любом событии касания, используйте следующее:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { buttonNamr.hidden =YES; } 
  • Как получить фоновое изображение кнопки в iPhone?
  • iOS popup закрыть ярлык кнопки: «ОК» или «Хорошо»?
  • может ли кто-нибудь сказать мне, как использовать переключатель?
  • Давайте будем гением компьютера.