UIButton TouchUpInside/TouchUpOutside не всегда вызывается?
У меня есть UISwipeGestureRecognizer
что оживляет соответственно UIButton
выделяется во время жеста, анимация завершается, когда UIButton
вызывает TouchUpInside/TouchUpOutside. Это прекрасно работает для жеста вниз моего UIButton
но по какой-то причине, когда я пытаюсь провести вверх (на другой UISwipeGestureRecognizer
), он не запускает функцию. (да, это то же самое UIButton
) Это то, что я сделал в viewDidLoad:
[myButton addTarget:self action:@selector(myAction) forControlEvents:(UIControlEventTouchUpInside|UIControlEventTouchUpOutside)];
Для действия я просто использовал:
-(void) myAction{
//Do whatever I want to do, in this case finish the animation.
}
Ни один из кода, который я запускаю для жеста смахивания, не должен даже влиять на UIButton
так что, думаю, мне интересно, есть ли у кого-нибудь идеи, что я могу здесь делать неправильно?
Редактировать: похоже, проблема в том, что когда я слишком быстро перетаскиваю вверх, кнопка теряет "фокус" (выделение), поэтому TouchUpInside / TouchUpOutside не вызывается, но когда я перетаскиваю вниз с любой скоростью, UIButton
остается выделенным все время, в любом случае, чтобы это исправить? (см. GIF)
2 ответа
Я исправил это! (Наконец, довольно глупо с моей стороны) Причина, по которой TouchUpInside/TouchUpOutside не вызывали, была в том, что я забыл добавить
myGesture.cancelsTouchesInView=NO;
За все мои распознаватели жестов, в любом случае, спасибо всем.
Из нашего обсуждения ниже я понимаю, что вы объявили UIGestureRecognizer в раскадровке, но также излишне добавили их в код. Попробуйте отменить их, посмотрите, работает ли UIButton, как задумано, и затем определитесь со стратегией - либо создайте и назначьте их все в вашей раскадровке или все в коде.