嵌套ScrollViews中的UIButton突出显示但不会触发Segue或IBAction时窃听 - Swift

时间:2016-03-04 04:09:41

标签: ios iphone swift uiscrollview uibutton

我有一个嵌套滚动视图中的UIButton(在水平分页的scrollview中的垂直分页滚动视图)。我的问题是当我点击它突出显示的按钮但它没有触发我链接到的segue。然后我尝试将它链接到IBAction函数,在那里我放置了一个断点,当我点击按钮时我没有碰到那个断点,所以我的按钮也没有触发IBActions。

我已经尝试关闭两个滚动视图的延迟内容触摸并且没有工作。所有这一切都是在我点击它时使按钮突出显示,而不是在突出显示之前加权一点。无论哪种方式,当我点击它时我的按钮突出显示但我的插座(segues或IBActions)都没有触发,我觉得这很奇怪。我发现其他人在网上有类似的问题,但他们的按钮甚至没有突出显示。我的亮点所以我知道它从用户那里得到了输入。

以下是我如何实例化嵌套的scrollview。主要的水平scrollview是在我的storyboard中创建的,然后在它的ViewController viewDidLoad方法中我这样做来嵌套垂直scrollview。垂直滚动视图包含我的按钮。

let readingVC = storyboard!.instantiateViewControllerWithIdentifier("ReadingViewController") as! ReadingRingViewController
readingVC.read = reading.minutesRead
readingVC.goal = reading.minutesGoal
readingVC.selectedDate = selectedDate
readingVC.today = today
let readingView = readingVC.view
let scrollPage2 = UIScrollView(frame: CGRectMake(readingView.bounds.size.width,0,readingView.bounds.size.width, readingView.bounds.size.height))
scrollPage2.addSubview(readingView)
scrollPage2.contentSize = CGSize(width: readingView.bounds.size.width, height: readingView.bounds.size.height*2)
scrollPage2.pagingEnabled = true;
scrollPage2.alwaysBounceVertical = true
scrollPage2.userInteractionEnabled = true
let readingBottomView = storyboard!.instantiateViewControllerWithIdentifier("ReadingBottomViewController").view
let scrollPage2Bottom = UIScrollView(frame: CGRectMake(0,readingView.bounds.size.height,readingBottomView.bounds.size.width, readingBottomView.bounds.size.height*2))
scrollPage2Bottom.addSubview(readingBottomView)
        scrollPage2Bottom.contentSize = CGSize(width: readingBottomView.bounds.size.width, height: readingBottomView.bounds.size.height)
scrollPage2.addSubview(scrollPage2Bottom)
scrollPage2.sendSubviewToBack(scrollPage2Bottom)

以下是我的按钮所在的viewController的代码。我已将其链接到IBAction,并将其作为push segue链接到另一个viewController

@IBAction func start(sender: AnyObject) {
    var x = 0
    var y = 0
    x = y + x
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "StartReading" {
        let destVC = segue.destinationViewController
    }
}

1 个答案:

答案 0 :(得分:4)

我解决了自己的问题。按钮的动作不起作用的原因是因为我正在添加按钮所在的视图作为子视图但忘记还将按钮视图的视图控制器添加为子视图控制器。因此,在实例化readingVC并设置其成员变量之后,我在代码行之后插入了行:

self.addChildViewController(readingVC)
readingVC.didMoveToParentViewController(self)

现在按钮完全按预期工作