У меня есть UIScrollView
в UIViewController
, который модально отображается переходом, а еще UIPanGestureRecognizer
закрывает контроллер представления панорамированием. Этот жест работает, только если
scrollView.contentOffset.y == 0
Проблема в том, что теперь два жеста панорамирования конфликтуют друг с другом, и я больше не могу прокручивать представление.
Чтобы решить эту проблему, я попытался использовать метод gestureRecognizer(_: shouldRecognizeSimultaneouslyWith:)
, вернув да, а также попытался добавить свой собственный жест панорамирования в UIScrollView
распознаватель жестов панорамирования следующим образом:
scrollView.panGestureRecognizer.addTarget(self, action: #selector(handlePanGesture(_:)))
Но это не решает проблему. Если вы знаете, как решить эту проблему, я был бы признателен за вашу помощь.
ИЗМЕНЕНО
Вот код моего жеста панорамирования, который закрывает контроллер представления:
@IBAction func handlePanGesture(_ sender: UIPanGestureRecognizer) {
let percentThreshold: CGFloat = 0.3
if scrollView.contentOffset.y == 0 {
let translation = sender.translation(in: view)
let verticalMovement = translation.y / view.bounds.height
let downwardMovement = fmaxf(Float(verticalMovement), 0.0)
let downwardMovementPercent = fminf(downwardMovement, 1.0)
let progress = CGFloat(downwardMovementPercent)
guard let interactor = interactor else {return}
switch sender.state {
case .began:
interactor.hasStarted = true
dismiss(animated: true, completion: nil)
case .changed:
interactor.shouldFinish = progress > percentThreshold
interactor.update(progress)
case .cancelled:
interactor.hasStarted = false
interactor.cancel()
case .ended:
interactor.hasStarted = false
interactor.shouldFinish ? interactor.finish() : interactor.cancel()
default:
break
}
}
}
EDITED_2 Вот код для Interactor
:
class Interactor: UIPercentDrivenInteractiveTransition {
var hasStarted = false
var shouldFinish = false
}
P.s. Я знаю, что есть масса похожих вопросов, но они мне не подходят.
UINavigationController
, он должен автоматически смахнуть, чтобы вернуться, если вы явно не удалите распознаватель жестов. developer.apple.com/documentation/uikit/uinavigationcontroller/ - person Samah   schedule 29.01.2018contentOffset.y
. Спасибо за предложение! - person Tigran Iskandaryan   schedule 08.03.2018