带有子 UIView(保存内容)的 UIScrollView 未检测到点击
Posted
技术标签:
【中文标题】带有子 UIView(保存内容)的 UIScrollView 未检测到点击【英文标题】:UIScrollView with child UIView (holds content) not detecting taps 【发布时间】:2016-01-26 17:29:05 【问题描述】:我撞墙了。我有一个带有子 UIView (contentView) 的 UIScrollView,其中包含内容和一个按钮。该按钮未检测到任何点击。我已经测试了许多方法,以编程方式创建按钮,使用情节提要,并在 contentView 中创建 UITapGestureRecognizer ......仍然没有。据我了解, UIScrollView 不会将任何触摸事件委托给它的孩子。我该如何解决?
【问题讨论】:
有没有尝试将您的UIScrollView
放入UIView
中?层次结构应为:ViewController -> UIView -> UIScrollView -> UIView -> UIButton
。
@Breek 如果我没记错的话,默认情况下 UIViewController 具有嵌入式视图,就像您以编程方式添加 UIScrollView 时一样:view.addSubview(scrollView)...无论如何,我以编程方式添加我的 UIScrollView 的父 UIView 并且 contentView 仍然没有接收到点击事件。
您能否添加一些有关如何以编程方式创建按钮的代码,以便我们看到您遇到的问题:)
UIButton does not work when it in UIScrollView的可能重复
【参考方案1】:
您可以通过编程方式创建按钮,然后将其添加为 contentView 的子视图。
let button = UIButton()
button.frame = CGRectMake(contentView.center.x-20.0, contentView.center.y-20.0, 40.0, 40.0)
button.addTarget(self, action: "handleTap", forControlEvents: UIControlEvents.TouchUpInside)
button.setTitle("Title", forState: UIControlState.Normal)
contentView.addSubview(button)
在动作上你可以处理点击
func handleTap()
//Do whatever you want
print("Button tapped")
我在 scrollView 中使用了一个 scrollView 和一个 UIView 对其进行了测试
【讨论】:
以上是关于带有子 UIView(保存内容)的 UIScrollView 未检测到点击的主要内容,如果未能解决你的问题,请参考以下文章