带有子 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 未检测到点击的主要内容,如果未能解决你的问题,请参考以下文章

UIView 调整内容大小

移动带有子视图的 UIView

带有 nib 子视图的自定义 UIVIew 无

以编程方式使用自动布局实现带有子视图的 uiview 子类

是否可以将带有大框架的uiview添加到带有小框架的uiview中

UIView transitionWithView 带有多个xib文件的子视图