Как создать UIBarButton для вызова функции UITapGestureRecognizer с помощью Swift? - PullRequest
0 голосов
/ 08 февраля 2019

Мой сценарий, я пытаюсь реализовать UIBarButton нажмите, чтобы позвонить ниже двух functions.Ниже код уже работает для view tab and pan, но теперь я меняю нажатие кнопки, чтобы вызвать две функции ниже.Как изменить ниже code?

@objc
    func handleCardTap(recognzier:UITapGestureRecognizer) {
        switch recognzier.state {
        case .ended:
            animateTransitionIfNeeded(state: nextState, duration: 0.9)
        default:
            break
        }
    }

    @objc
    func handleCardPan (recognizer:UIPanGestureRecognizer) {
        switch recognizer.state {
        case .began:
            startInteractiveTransition(state: nextState, duration: 0.9)
        case .changed:
            let translation = recognizer.translation(in: self.cardViewController.handleArea)
            var fractionComplete = translation.y / cardHeight
            fractionComplete = cardVisible ? fractionComplete : -fractionComplete
            updateInteractiveTransition(fractionCompleted: fractionComplete)
        case .ended:
            continueInteractiveTransition()
        default:
            break
        }

    }

1 Ответ

0 голосов
/ 08 февраля 2019

Если вам нужно вызвать обе эти функции распознавания жестов касания из UIBarButtonItem, лучше всего создать элемент кнопки панели пользовательского вида и добавить распознаватели жестов в это настраиваемое представление.Примерно так будет работать:

let tapGestureView = UIView() // initialize & size this as you need
tapGestureView.addGestureRecognizer(UITapGestureRecognizer(action: #selector(handleCardTap(_:)), target: self))
tapGestureView.addGestureRecognizer(UITapGestureRecognizer(action: #selector(handleCardPan(_:)), target: self))
let barButton = UIBarButtonItem(customView: tapGestureView)

Вот некоторые дополнительные ресурсы для UITapGestureRecognizers и UIBarButtonItems .Хотя кажется немного странным настроить 2 разных касания для одного и того же вида, и один из них, являющийся панорамированием (по крайней мере, по названию), кажется странным, но вот как вы этого добьетесь!

...