iOSUIScrollView和控制器返回手势冲突怎么办-创新互联
小编给大家分享一下iOS UIScrollView和控制器返回手势冲突怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的滨州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!开发中,有部分UI,会将UIScrollView横向铺在底层,上面放tableView 或一些视图左右滚动切换,底层的scrollView会和Nav ViewController原有的返回手势冲突

解决办法,重写UIScrollView 的gestureRecognizerShouldBegin,在ScrollView滚动到头的时候,屏蔽ScrollView的手势
class GesturesConflictScrollView: UIScrollView {
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
back(by: gestureRecognizer)
}
private final func back(by gestureRecognizer: UIGestureRecognizer) -> Bool {
guard gestureRecognizer == panGestureRecognizer else { return true }
// point.x < 0 代表左滑即手指从屏幕右向左移动 反之一样
let point: CGPoint = panGestureRecognizer.translation(in: self)
let state: UIGestureRecognizer.State = gestureRecognizer.state
let locDistance: CGFloat = UIScreen.main.bounds.size.width
if state == .began || state == .possible {
let locationPoint = gestureRecognizer.location(in: self)
if point.x > 0 && locationPoint.x < locDistance && contentOffset.x <= 0 {
return false
}
let pageCount = contentSize.width / UIScreen.main.bounds.size.width
let criticalPoint = pageCount < 2 ? locDistance : locDistance * (pageCount - 1)
if point.x < 0 && contentOffset.x == criticalPoint {
return false
}
}
return true
}
}以上是“iOS UIScrollView和控制器返回手势冲突怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
网站名称:iOSUIScrollView和控制器返回手势冲突怎么办-创新互联
地址分享:http://www.fbiktj.com/article/cshjis.html
其他资讯
- SVGClipPath如何实现六边形图像的方法-创新互联
- Oracledatabase11.2.0.1升级至11.2.0.3-创新互联
- 买空间是什么意思,买空间独立网页空间100M是什么意思并发连接数又是什么意思
- 使用CountUp.js怎么实现一个数字滚动增值效果
- linux命令impdp 查看文件权限的Linux命令
- 裸金属云排行?裸金属服务器有哪些
- jacksonenum(jacksontypereference)
- win7系统的年代windows7以前的版本的
- Redis灵活获取Set类型的数据(redis获取set值)
- 云主机好用吗?(吉尔吉斯斯坦云主机好在哪,吉尔吉斯斯坦云主机优势特点详解)


咨询
建站咨询
