解决UIScrollView不能侧滑返回

当我们的APP里使用一个在水平方向上滑动的UIScrollView时,会导致系统的侧滑返回功能响应失效,这是因为UIScrollView和侧滑返回共用一个UIPanGestureRecognizer手势响应事件,UIScrollView拦截了这个事件并做出了响应。我们只需要创建UIScrollView的一个分类并重写gestureRecognizerShouldBegin方法即可。

extension UIScrollView {
    // 解决有UIScrollView时不能在屏幕左边侧滑返回
    open override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        // 过滤UITextView(因为UITextView继承自UIScrollView),否则会引起崩溃
        if (gestureRecognizer.view?.isMember(of: UITextView.self))! {
            return true
        }
        let velocity = (gestureRecognizer as! UIPanGestureRecognizer).velocity(in: self)
        let location = gestureRecognizer.location(in: self)
        if (velocity.x > 0.0 && Int(location.x) % Int(UIScreen.main.bounds.size.width) < 60) {
            return false
        }
        return true
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容