UIScrollView 的一部分不响应触摸
Posted
技术标签:
【中文标题】UIScrollView 的一部分不响应触摸【英文标题】:Part of UIScrollView doesn't respond to touches 【发布时间】:2017-04-16 13:07:25 【问题描述】:我有一个 UIScrollView
,上面有 7 个 UIButton
s。
5 个按钮工作正常,但其他两个(需要滚动滚动视图才能到达按钮)在大多数情况下不起作用(如果我多次点击它们有时会起作用,但大多数情况下)他们不这样做的时间)。
我尝试增加contentSize
,但按钮仍然不起作用。
我试图改变按钮的 x 位置,它们都可以工作,所以问题肯定是关于 scrollView 中的位置。
代码:
滚动视图:
self.buttonsScrollView = UIScrollView(frame: self.bounds)
self.buttonsScrollView?.frame.origin.y = (self.window?.frame.size.height)! - self.bounds.size.height
self.buttonsScrollView?.showsHorizontalScrollIndicator = false
self.buttonsScrollView?.canCancelContentTouches = true
self.buttonsScrollView?.clipsToBounds = false
按钮 (x7)
let buttonX = UIButton(frame: CGRect(x: previousButton.frame.origin.x + spaceBetweenButtons, y: buttonsYPosition, width: buttonSize, height: buttonSize))
buttonX.setImage(UIImage(named: "buttonsXImage"), for: UIControlState())
buttonX.tag = 0
buttonX.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
let buttonXRecognizer = UIPanGestureRecognizer(target: self, action: #selector(didDragButton))
buttonX.addGestureRecognizer(buttonXRecognizer)
任何想法可能是什么问题?
谢谢!
【问题讨论】:
显示您的一些代码或 IB。你在使用自动布局吗? @toddg 我已经为滚动视图和按钮添加了代码。请看一下 按钮在屏幕底部吗?也许你遇到了这个问题:***.com/a/23047708 @toddg 5 个按钮响应点击。只有 2 个按钮没有,所以我认为这不是问题。还有其他想法吗? 也许你的问题是包含你的 scrollView 的视图,你可以剪辑你的容器视图,看看你的两个有问题的按钮是否还在,或者你可以为你的 scrollView 容器视图设置边框颜色和宽度 【参考方案1】:您的问题是包含您的scrollView
的视图,您可以剪辑您的容器视图,看看您的两个有问题的按钮是否仍然存在,或者您可以为您的scrollView
容器视图设置边框颜色和宽度
检查剪辑包含您的滚动视图的视图
self.scrollViewSuperView.clipsToBounds = true
或者你可以设置scrollViewSuperView
边框宽度和边框颜色
self.scrollViewSuperView.borderColor = UIColor.red.cgColor
self.scrollViewSuperView.borderWidth = 1
然后根据需要调整您的约束/框架
希望对你有帮助
【讨论】:
以上是关于UIScrollView 的一部分不响应触摸的主要内容,如果未能解决你的问题,请参考以下文章
子类 UIScrollView 检测按钮内的触摸,但对用户交互无响应
UIScrollView 在 4 英寸上工作,在 3.5 英寸上不响应任何触摸
在Scroll View的高度动画后,UIScrollView的子视图不响应触摸