Hero icon indicating copy to clipboard operation
Hero copied to clipboard

使用 view.hero.id present到二级页面,然后二级页面实现UIPanGestureRecognizer功能,会造成页面卡死

Open XWXGitHub opened this issue 2 years ago • 5 comments

What did you do?

从一级页面present到二级页面时,在二级页面实现 view.hero.id = **** self.isHeroEnabled = true 并且还在二级页面设置UIPanGestureRecognizer侧滑手势,

@objc func slide(pan: UIPanGestureRecognizer) { let translationX = pan.translation(in: pan.view).x if translationX > 0 { // 向右平移滑动 let progress = translationX / (ScreenW / 3) switch pan.state { case .began: dismiss(animated: true) case .changed: Hero.shared.update(progress)

            let position = CGPoint(x: translationX + view.center.x, y: pan.translation(in: pan.view).y + view.center.y)
            Hero.shared.apply(modifiers: [.position(position)], to: view)
        default:
            if progress + pan.velocity(in: pan.view).x > 0.5 {
                Hero.shared.finish()
            } else {
                Hero.shared.cancel()
            }
        }
    }
}

What did you expect to happen?

我以为能够正常侧滑返回一级页面.

What happened instead?

最后发现slide方法正常执行,但侧滑功能失效,然后返回一级页面时整个APP就卡死了. 然而不知道为什么模拟器测试是没有任何问题一切正常.

General Information

  • Hero Version:

  • iOS Version(s): 14.0

  • Swift Version: 5.4.2

  • Devices/Simulators: Devices

  • Reproducible in Examples? (Yes/No): NO

Demo Project

XWXGitHub avatar Sep 03 '21 06:09 XWXGitHub

我也遇到了这个问题,请问你现在解决了没

Tang-Hai avatar Mar 23 '22 14:03 Tang-Hai

某些情况下iPhone正常,iPad会崩溃

ShenYj avatar May 23 '22 16:05 ShenYj

把 finish cancel 等操加个 DispatchQueue.main.async { } ,可以解决问题

Tang-Hai avatar May 24 '22 02:05 Tang-Hai

把 finish cancel 等操加个 DispatchQueue.main.async { } ,可以解决问题

谢谢分享,以后再用遇到试试

ShenYj avatar May 25 '22 07:05 ShenYj

我也遇到这个问题了,我是push到次级页面,实现手势下拉返回,有一定几率页面卡死

coderDeviCheng avatar Jul 31 '23 09:07 coderDeviCheng