【发布时间】:2019-06-14 21:52:01
【问题描述】:
我想知道是否真的可以在推送的UIViewController 上使用UIPanGestureRecognizer 来实现类似的行为,例如在 Telegram Messenger 聊天视图(以及许多其他流行的应用程序)中,您可以在其中简单地从屏幕上的任意位置向右滑动以返回菜单(或任何其他最初推送我们正在查看的视图控制器的视图控制器)。
我试过这段代码:
@objc func swipeLeft(_ sender: UIPanGestureRecognizer) {
let point = sender.translation(in: view)
containerView.center = CGPoint(x: point.x > 0 ? view.center.x + point.x : view.center.x, y: view.center.y)
if sender.state != .ended { return }
if containerView.center.x < view.frame.width / 2 {
dismissSelf()
}
else {
UIView.animate(withDuration: 0.2) {
self.containerView.center = self.view.center
}
}
}
还有一个 UIPanGestureRecognizer,如果你 presented 你的 ViewController 但它被推送时,它会很好地工作。至少现在不是这样。
现在,您会看到一个黑色视图,这也是您在推送的 UIViewController 底部的“Debug View Hiracy”中看到的内容。
感谢任何帮助!
【问题讨论】:
标签: ios swift swift4 uipangesturerecognizer