кнопка 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; } 
  • Кнопка добавления ставки в путанице приложения
  • Xcode 6 и ограничения - опция Greyed out equal widths
  • Нет кнопки «плюс» или «минус» в настройках локализации Xcode
  • Interesting Posts

    UITableView должен выглядеть как «Контакты с полями редактирования»

    libswiftRemoteMirror.dylib не разрешен

    Используйте значительное изменение местоположения, если пользователи не подумают, что их батарея разрядится

    Проблема с памятью iOS

    Нет необходимости сохранять черновик в MFMailComposeViewController

    Затухание / растворение при изменении изображения UIImageView

    Создать службу iOS BLE HID?

    Предупреждение об ограничении автоопределения «Будет пытаться восстановить, нарушая ограничение»

    Страница сертификатов, идентификаторов и профилей недоступна в developer.apple

    iOS: периферийное устройство Bluetooth LE больше не обновляется после возвращения в диапазон

    Запуск XCode Simulator с пользователем jenkins

    Facebook SDK: openActiveSessionWithPermissions completeHandler не вызывается

    Как удалить локализацию из файла

    UIActivityViewController Flickr Sharing – отсутствует опция Flickr

    Специфическая ошибка iPhone 5S: для компиляции нет архитектур (ONLY_ACTIVE_ARCH = YES, active arch = arm64, VALID_ARCHS = armv7 armv7s)

    Давайте будем гением компьютера.