UIScrollView 的一部分不响应触摸

Posted

技术标签:

【中文标题】UIScrollView 的一部分不响应触摸【英文标题】:Part of UIScrollView doesn't respond to touches 【发布时间】:2017-04-16 13:07:25 【问题描述】:

我有一个 UIScrollView,上面有 7 个 UIButtons。

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的子视图不响应触摸

UIButton 没有响应嵌套在另一个 UIScrollView 中的 UIScrollView 中的触摸

UIScrollView“框架外”触摸区域没有响应

NGUI与EasyTouch结合使用