【问题标题】:UIButton inside UIView inside UIScrollView not firing tap actionUIScrollView 内的 UIView 内的 UIButton 不触发点击动作
【发布时间】:2018-06-09 07:25:52
【问题描述】:

我已经找了好几个小时了,但还没有运气。我想在滚动视图中使用两个自定义视图。第一个视图有一个按钮作为子视图,可将用户引导至下一页(向下滚动)。但它从未触发过按钮操作。如果我将按钮用作滚动视图子视图,一切正常,但这不是我想要的。

scrollview 视图控制器的代码:

    class ViewController: UIViewController {

    @IBOutlet weak var scrollView: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        let redView = View1()
        redView.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.scrollView.frame.height)
        self.scrollView.addSubview(redView.view!)

        let blueView = UIView(frame: CGRect(x: 0, y: self.scrollView.frame.height, width: self.view.frame.width, height: self.scrollView.frame.height))
        blueView.backgroundColor = .blue
        self.scrollView.addSubview(blueView)

        self.scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.scrollView.frame.height * 2)
    }

    func go(to page: Int) {
        let y = CGFloat(page) * self.scrollView.frame.size.height
        self.scrollView.setContentOffset(CGPoint(x: 0, y: y), animated: true)
    }
}

ScrollView Storyboard Configuration

View1类的代码:

    class View1: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func didTouchUpInsideMoreInfoButton(_ sender: Any) {
        print("test")
    }
}

欢迎任何想法。提前致谢。

【问题讨论】:

  • 按钮在哪里?我在您的代码中没有看到任何按钮
  • 它位于 xib 文件中。我只是将 IBAction 连接到 View1 类。
  • 我们可以解决您的问题,但根据您的代码,我建议您在继续之前重新学习 Auto LayoutUIScrollView 以及它们如何协同工作。 Apple 的文档在这方面确实不错:developer.apple.com/library/content/technotes/tn2154/…
  • 这只是一个示例代码来说明我的观点。我的代码到底有什么问题?
  • 您确认您的按钮确实与动作相关联了吗?

标签: ios iphone swift uiview uiscrollview


【解决方案1】:

原来我使用的是视图控制器的视图,但由于某种原因,选择器不能以这种方式工作。所以,我所做的只是创建一个 UIView,然后一切正常。

【讨论】:

    【解决方案2】:
    1. 检查按钮 userInteraction 是否启用。
    2. 有时,如果您的按钮位于另一个视图(例如 UIView)中,则不允许您点击它。要解决此问题,您可能希望在该视图的顶部添加按钮,但不在其内部。确保它位于情节提要的任何视图之上,但不在其内部。

    【讨论】:

    • 按钮 userInteraction 已启用。我在运行时检查这个。我的按钮是 View1 子视图。 View1 是一个 UIViewController。我需要将这个按钮放在 View1 中,否则我需要在没有它的情况下构建我的整个布局并稍后添加它,这对于架构决策来说似乎非常糟糕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2013-12-24
    • 2021-12-29
    • 2012-05-03
    • 2019-02-28
    相关资源
    最近更新 更多