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, как задумано, и затем определитесь со стратегией - либо создайте и назначьте их все в вашей раскадровке или все в коде.

Другие вопросы по тегам